#!/bin/sh
a=0
while [ $a -lt $# ]
do
var_no=$a
echo "var_no value is $var_no"
dir_no=`expr $a + 1`
dirname=$dir_no
echo "dirname value is $dirname" # $n is the command line arg
if [ -d $dirname ]
then
echo " $dirname exists"
else
echo "[$dirname] not exist"
mkdir $dirname;
fi
a=`expr $a + 1`
done
当我尝试从参数赋值给shell变量时,它没有显示预期的输出,如下所示。
输出
$sh while.sh xyz yzx
var_no value is 0
dirname value is 1 ------ but expecting xyz
This dirname 1 exists
var_no value is 1
dirname value is 2 ------ but expecting yzx
This dirname 2 exists
答案 0 :(得分:1)
问题在于这一行:dirname=$dir_no
您正在使用目录号码破坏您的目录名称。这将不为您提供$1
,$2
等的价值。这会为您提供一个数字(1
,2
等)。
如果您想要变量$1
,$2
等,则需要使用variable variable:
dirname=${!dir_no}