シェルでループからbreakする方法

シェルでループから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コマンドで途中で終了することができます。