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" であるとします。最後のステートメントは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"

おすすめ記事