例えば1から10までの連番を生成してループを回したい時、
for i in {1..10} do ...
の様にして連番生成、ループ処理を行うことができるが、この範囲を変数として
Start=1 End=10 for i in {${Start}..${End}} do ...
としてもiに{1..10}という文字列が格納されるだけで、展開されて連番を生成してくれない。
こんな時は、以下の様に“eval echo ” を使う。
Start=1 End=10 for i in `eval echo {${Start}..${End}}` do ...
これで、先のように1から10までの連番が生成される。
array=("a" "b" "c") Narray=$(( ${#array[*]} - 1 )) for i in `eval echo {0..${Narray}}` do echo ${i} ${array[${i}]} done