これは私のスクリプトです。
[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" であるとします。最後のステートメントはFold5を印刷すると
予想していましたが、5つだけを印刷します。echo $dirname$i
誰かが「fold5」を印刷する方法を説明できますか?
また、誰かがなぜ私に5万印刷されるのかを説明できますか?
ベストアンサー1
スクリプトの8行目にタイプミスがあります。次のようにする必要があります。
read dirname
$dirnameが空なので、「5」だけを印刷する理由です。
これにより、read $dirname
シェルは '$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"