for文は与えた文字列の数だけ繰り返し処理を実行します。
for文の例を記します。
#!/bin/bash cnt=0 for str in aa bb cc do echo $str done
上記シェルスクリプトは文字列aa、bb、ccを順次に変数strに代入して繰り返します。
ファイル名「prog009.sh」として保存したときの実行例です。
$ chmod u+x prog009.sh $ ./prog009.sh aa bb cc
while文やuntil文は条件式での真偽によって繰り返し処理を実行するか終了させるかを決定しますが、for文はinの後に与えた文字列の数だけ繰り返します。
この仕組みを利用して以下のようなスクリプトを書くこともできます。
#!/bin/bash cd /etc/sysconfig/network-scripts interfaces=$(ls ifcfg-*) for i in $interfaces; do echo $i done
実行結果
ifcfg-eno16777736 ifcfg-lo
「ls ifcfg-*」コマンドの実行結果が、「ifcfg-eno16777736 ifcfg-lo」となる場合、inの後には2つの文字列が与えられることになります。つまり、2回繰り返します。
指定の数だけ繰り返す
指定の数だけ繰り返す、繰り返し処理を実装することもできます。
#!/bin/bash for i in `seq 0 10` do echo $i done
実行結果
0 1 2 3 4 5 6 7 8 9 10
seqコマンドは、連続した数字の列を出力・表示するコマンドです。
- seqコマンドの書式
- seq [オプション] [初期値 [間隔]] 最終値
初期値から最終値までの数字の列を表示します。間隔を指定していない場合は、初期値から最終値まで1ずつ増加します。
前述のとおり、for文はinの後に与えた文字列の数だけ繰り返します。上記シェルスクリプトでは、このseqコマンドを使って、0~10までの文字列をfor文に渡し、繰り返し処理が実行されます。