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文に渡し、繰り返し処理が実行されます。