シェルでループからbreakする方法
シェルスクリプトでループを途中で終了するためには、breakコマンドを使用します。
breakはループを強制的に終了し、ループの外にプログラムの制御を移します。
breakは主にfor、while、untilループで使用されます。
以下に、forループとwhileループの中でbreakを使用する例を示します。
forループでのbreakの使用例
#!/bin/bash for i in {1..10} do echo "現在の値は $i です。" if [ "$i" -eq 5 ]; then echo "ループを終了します。" break fi done echo "ループが終了しました。"
このスクリプトの動作:
1. forループは1から10までの値を順に処理します。
2. if条件文を使用して、変数iが5に達したときにbreakを実行し、ループを終了します。
3. ループが終了すると、"ループが終了しました。
"というメッセージが表示されます。
whileループでのbreakの使用例
#!/bin/bash counter=1 while [ $counter -le 10 ] do echo "カウンターの値は $counter です。" if [ "$counter" -eq 7 ]; then echo "ループを終了します。" break fi counter=$((counter + 1)) done echo "ループが終了しました。"
このスクリプトの動作:
1. counterという変数を1に初期化します。
2. whileループはcounterが10以下である限り繰り返します。
3. counterが7になったとき、if条件文でbreakが実行され、ループを終了します。
4. ループ終了後、"ループが終了しました。
"というメッセージが表示されます。
多重ループでのbreak
多重ループの場合、breakに数値を指定することで、外側の指定されたレベルのループまで一気に抜けることができます。
例えば、2重ループで外側のループも抜けたい場合はbreak 2とします。
#!/bin/bash for i in {1..3} do for j in {1..3} do echo "i = $i, j = $j" if [ "$j" -eq 2 ]; then echo "外側のループまで終了します。" break 2 fi done done echo "全てのループが終了しました。"
このスクリプトの動作:
1. 外側のループ(i)が1から3まで、内側のループ(j)も1から3までの値を処理します。
2. 内側のループでjが2に達したときにbreak 2を実行し、外側のループまで一気に抜けます。
3. すべてのループが終了すると、"全てのループが終了しました。
"というメッセージが表示されます。
注意点
- breakはループ内でしか使用できません。
ループの外で使用すると、スクリプトはエラーになります。
- breakを使用する際には、条件が正しく設定されているか確認してください。
さもないと、ループが意図しないタイミングで終了する可能性があります。
このようにして、シェルスクリプト内のループをbreakコマンドで途中で終了することができます。