繰り返し処理を行う - Linux シェルスクリプト プログラミング

PROGRAM


繰り返し処理を行う

Linux シェルスクリプト (sh) では、特定の条件を満たすまでの間、処理を繰り返し実行することができます。

まず、一定の条件を満たすまで処理を実行したい場合には、次のように "while" 文を利用します。

while [ 条件式 ]

do

# ここに繰り返し実行する処理を記載します。

 

done

ここで指定できる条件式は 条件分岐と比較演算子 で記したものと同じです。

繰り返し処理を行う中で、while に指定した条件式が "真" になるような処理を記載して、プログラムを制御します。この while ループの中では、"continue" ステートメントでループの先頭へ、"break" ステートメントでループを終了、といった制御も可能です。

 

同じように、一定の条件が満たされない場合に繰り返して処理を行いたい場合は、"while" の代わりに "until" 文を使用することも可能です。

until [ 条件式 ]

do

# ここに繰り返し実行する処理を記載します。

 

done

 

また、空白で区切られたそれぞれを、順に処理するための "for" 文もあります。

for ELEMENT in 10 20 30

do

# ここに要素ごとに実行する処理を記載します。

echo $ELEMENT

 

done

このようにすることで、文字列として渡した "10 20 30" の値が、空白文字で区切られた順に ELEMENT 変数に格納され、do-done ブロックで囲まれた処理を実行することができるようになっています。

あらかじめ、変数に文字列を格納して "for ELEMENT in $LIST" と記載したりすることもできます。

LIST="10 20 30"

 

for ELEMENT in $LIST

do

# ここに要素ごとに実行する処理を記載します。

echo $ELEMENT

 

done

配列に格納された要素ごとに繰り返し処理を行いたい場合は、次のような感じになります。

ARRAY=("10" "20" "30")

 

for ELEMENT in "${ARRAY[@]}"

do

# ここに配列の要素ごとに実行する処理を記載します。

echo $ELEMENT

 

done

 

また、シェルスクリプトに与えられた引数は "$@" 変数に格納されているので、それを使って、渡された引数の値を順に処理するといったことも可能です。

for ELEMENT in $@

do

# ここに配列要素ごとに実行する処理を記載します。

echo $ELEMENT

 

done

この for 文の中でも、次の繰り返し処理に移動する "continue" ステートメントや、繰り返し処理を終了する "break" ステートメントを利用することができるので、それらを if 文などの条件分岐と併せて使用すれば、多彩な処理を記載することも可能です。


[ もどる ]