bash ではC言語スタイルのfor ループが使えます。
bash のループの例を調べると seq などが散見されるのですが、C言語スタイルのおなじみの for ループが使えます。
え?とおもった人はbash のヘルプをもう一度見てみてください
ヘルプの読み方
bash$ help 'for (('
C style for ループの例
これはもう、見たほうが早いですよね。
for (( idx=0 ; idx<10; idx++ )) ; do echo $idx; done
ポイント
このポイントは、丸括弧を2つ書く、ダブルパーレンを利用する点にあります。
"(())" のdouble Parenthesis を使う。
また変数に$マークを付けないところも重要ポイントです。
bash のヘルプより
takuya@Desktop$ help 'for (('
for ((: for (( exp1; exp2; exp3 )); do COMMANDS; done
算術 for ループ
以下と等価です。
(( EXP1 ))
while (( EXP2 )); do
COMMANDS
(( EXP3 ))
done
EXP1、EXP2、および EXP3 は数式です。いずれかの数式を省略した場合、
値が 1 であるとして評価されます。
終了ステータス:
最後に実行したコマンドのステータスを返します。
seq 使うより楽
昔の記述を見ていると seq 使う例が多いようです。
これらはほとんど同じです。
for i in `seq 1 10` ; do echo $i ; done;
for i in $(seq 1 10) ; do echo $i ; done;
for i in {1..10} ; do echo $i ; done;
for (( i=1 ; i<=10 ; i++)); do echo $i ; done;
seq を使うとサブシェル(コマンド置換)を使うため極小で僅かだけパフォーマンス的に不利です。ほとんど気にならないけど。
読みやすさを考慮すれば、C言語スタイル for ループか、記号の少ない{1..10} のブレース展開が断然に有利だと思います。
bash 3.x から
この機能は、たしか bash 3.0 から追加されていたと思います。