ループは break で途中で中断することができます。
for ~ break
for i in {1..10}; do
echo "${i}"
break
done
for i in {1..10}; do
echo "${i}"
# i が 5 になったら break でループを抜ける
if [[ $i == 5 ]]; then
break
fi
done
while ~ break
i=1
while [[ $i -lt 10 ]]; do
echo "${i}"
break
i=$((i+1))
done
i=1
while [[ $i -lt 10 ]]; do
echo "${i}"
# i が 5 になったら break でループを抜ける
if [[ $i == 5 ]]; then
break
fi
i=$((i+1))
done
break n ~ ループを終了するレベルの指定
break には終了するループのレベルを指定することができます。
for i in {1..3}; do
for j in {1..3}; do
echo "${i}, ${j}"
break 1
done
done
2重のループで break に 2 を指定した場合、外側のループが中断します。
for i in {1..3}; do
for j in {1..3}; do
echo "${i}, ${j}"
break 2
done
done
3重のループで break に 3 を指定した場合、一番外側のループが中断します。
for i in {1..3}; do
for j in {1..3}; do
for k in {1..3}; do
echo "${i}, ${j}, ${k}"
break 3
done
done
done
3重のループで break に 2 を指定した場合、2重目のループが中断します。
for i in {1..3}; do
for j in {1..3}; do
for k in {1..3}; do
echo "${i}, ${j}, ${k}"
break 2
done
done
done
for i in {1..3}; do
j=1
while true; do
for k in {1..3}; do
echo "${i}, ${j}, ${k}"
break 2
done
j=$((j+1))
done
done
break に 0 を指定した場合、エラーになります。
# break に 1 より小さい数字を指定した場合はエラーになる
for i in {1..3}; do
echo "${i}"
break 0
done