这是我的脚本
[root@localhost scripts]# cat nested.sh
#!/bin/ksh
echo Enter the level of nesting
read lev
echo Enter the directory \( Enter the Absolute Path\)
read path
echo Enter the directory name
read $dirname
cd $path
for((i=1;i<=$lev;i++));
do
mkdir '$dirname$i'
cd '$dirname$i'
done
echo $dirname$i
假设最后 $dirname 的值为“fold”,$i 的值为“5”。
我原本期望最后一条语句echo $dirname$i
打印 Fold5
,但它只打印 5。
有人可以解释一下如何打印“fold5”吗?
另外有人可以解释一下为什么它只为我打印了 5 个吗?
答案1
你的脚本第 8 行有一个拼写错误,它应该是:
read dirname
这就是你只打印“5”的原因,因为 $dirname 是空的。
发生的情况是,当您这样做时,read $dirname
shell 将 '$dirname' 扩展为其空值。
另外,请注意,在括起变量时始终使用双引号。
修改后的脚本:
#!/bin/ksh
echo Enter the level of nesting
read lev
echo Enter the directory \( Enter the Absolute Path\)
read path
echo Enter the directory name
read dirname
cd $path
for((i=1;i<=$lev;i++));
do
mkdir "$dirname$i"
cd "$dirname$i"
done
echo "$dirname$i"