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 から追加されていたと思います。