ループを使用すると、特定の条件が満たされるまで、1つ以上のコマンドを複数回実行できます。ただし、ループのフローを変更してループを終了するか、現在の反復のみを終了する必要がある場合があります。
Bashでは、break
およびcontinue
ステートメントを使用すると、ループの実行を制御できます。
break
ステートメント#
break
ステートメントは現在のループを終了し、終了したループに続くコマンドにプログラム制御を渡します。 for
を終了するために使用されます 、while
、until
、またはselect
loop.s break
の構文 ステートメントは次の形式を取ります:
break [n]
[n]
はオプションの引数であり、1以上である必要があります。[n]
の場合 が指定されている場合、n番目の囲みループが終了します。 break 1
break
と同等です 。
break
の使用方法をよりよく理解するため ステートメント、次の例を見てみましょう。
以下のスクリプトでは、while
の実行 現在の反復アイテムが2
に等しくなると、ループが中断されます :
i=0
while [[ $i -lt 5 ]]
do
echo "Number: $i"
((i++))
if [[ $i -eq 2 ]]; then
break
fi
done
echo 'All Done!'
Number: 0
Number: 1
All Done!
break
の使用例を次に示します。 ネストされたfor
内のステートメント ループします。
引数[n]
の場合 与えられていない、break
最も内側の囲みループを終了します。外側のループは終了していません:
for i in {1..3}; do
for j in {1..3}; do
if [[ $j -eq 2 ]]; then
break
fi
echo "j: $j"
done
echo "i: $i"
done
echo 'All Done!'
j: 1
i: 1
j: 1
i: 2
j: 1
i: 3
All Done!
外側のループを終了する場合は、break 2
を使用します 。引数2
break
に通知します 2番目の囲みループを終了するには:
for i in {1..3}; do
for j in {1..3}; do
if [[ $j -eq 2 ]]; then
break 2
fi
echo "j: $j"
done
echo "i: $i"
done
echo 'All Done!'
j: 1
All Done!
continue
ステートメント#
continue
ステートメントは、現在の反復の囲んでいるループの本体内の残りのコマンドをスキップし、プログラム制御をループの次の反復に渡します。
continue
の構文 ステートメントは次のとおりです。
continue [n]
[n]
引数はオプションであり、1以上にすることができます。[n]
の場合 が与えられると、n番目の囲みループが再開されます。 continue 1
continue
と同等です 。
以下の例では、現在の反復アイテムが2
に等しくなると 、continue
ステートメントにより、実行はループの最初に戻り、次の反復を続行します。
i=0
while [[ $i -lt 5 ]]; do
((i++))
if [[ "$i" == '2' ]]; then
continue
fi
echo "Number: $i"
done
echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!
次のスクリプトは、1
から数値を出力します 50
まで 9
で割り切れる 。
数値が9
で割り切れない場合 、continue
ステートメントはecho
をスキップします コマンドを実行し、ループの次の反復に制御を渡します。
for i in {1..50}; do
if [[ $(( $i % 9 )) -ne 0 ]]; then
continue
fi
echo "Divisible by 9: $i"
done
Divisible by 9: 9
Divisible by 9: 18
Divisible by 9: 27
Divisible by 9: 36
Divisible by 9: 45
結論#
ループはプログラミング言語の基本的な概念の1つです。 Bashなどのスクリプト言語では、ループは反復的なタスクを自動化するのに役立ちます。
break
ステートメントは、現在のループを終了するために使用されます。 continue
ステートメントは、ループの現在の反復を終了し、次の反復を開始するために使用されます。
ご質問やご意見がございましたら、お気軽にコメントをお寄せください。