如何在 Korn Shell 中打印字符串串联

如何在 Korn Shell 中打印字符串串联

这是我的脚本

[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 $dirnameshell 将 '$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"

相关内容