範囲が変数で指定されている場合、Bashの数値の範囲を反復処理するにはどうすればよいですか?
私はこれを実行できることを知っています(Bashのドキュメントでは「シーケンス式」と呼ばれています)。
for i in {1..5}; do echo $i; done
それは与える:
1
2
3
4
5
それでも、範囲のエンドポイントのいずれかを変数に置き換えるにはどうすればよいですか?これは機能しません:
END=5
for i in {1..$END}; do echo $i; done
どのプリント:
{1..5}
for i in {01..10}; do echo $i; done
はのような数字を与えます01, 02, 03, ..., 10
。
myarray=('a' 'b' 'c'); for i in ${!myarray[@]}; do echo $i; done
(感嘆符に注意してください)。元の質問よりも具体的ですが、役立つ場合があります。bashパラメータの展開を
{jpg,png,gif}
、ここでは直接触れられていないような表現にも使用されますが、答えは同じです。変数によるブレース展開を参照してください?[duplicate]これはこれの複製としてマークされています。