1. ホーム
  2. linux

[解決済み] bashのforループで変数を使用する方法 [重複].

2023-07-27 03:48:33

質問

bash の for ループで変数を使用するにはどうしたらよいですか? 標準的なforループを使えば、私が期待することができます。

for i in {0..3}
do
   echo "do some stuff $i"
done

これはうまく動作します。 0から3までの4回をループし、私のメッセージを表示し、最後にカウントを置きます。

do some stuff 0
do some stuff 1
do some stuff 2
do some stuff 3

同じことを以下のforループで試すと、文字列と等しくなるようですが、これは私が望むものではありません。

length=3
for i in {0..$length}
do
   echo "do something right $i"
done

を出力します。

do something right {0..3}

私が試したのは

for i in {0.."$length"} and for i in {0..${length}} (both output was {0..3})

for i in {0..'$length'} (output was {0..$length})

で、どちらも私が必要とすることをしません。 誰かが私を助けてくれることを願っています。 forループに関するbashの専門家の助けには、事前に感謝します。

どのように解決する?

一つの方法として eval :

for i in $( eval echo {0..$length} )
do
       echo "do something right $i"
done

備考 を設定するとどうなるか。 length=;ls または length=; rm * (を使うことができます(後者は試さないでください)。

無事に を使用しています。 seq :

for i in $( seq 0 $length )
do
       echo "do something right $i"
done

または、c-styleのfor loopを使うこともでき、これも安全です。

for (( i = 0; i <= $length; i++ )) 
do 
       echo "do something right $i"
done