Введение
Циклы позволяют выполнять одну или несколько команд несколько раз, пока не будет выполнено определенное условие. Однако иногда может потребоваться изменить поток цикла и завершить цикл или только текущую итерацию.
В Bash операторы break
и continue
позволяют управлять выполнением цикла. (петля)
Заявление о разрыве Bash
Оператор break
завершает текущий цикл и передает управление программе команде, следующей за прерванным циклом. Он используется для выхода из цикла for
, while
, until
или цикла select
. Синтаксис оператора 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
завершает второй цикл закрытия:
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!
Непрерывная декларация Bash
Оператор continue
пропускает оставшиеся команды в теле цикла, охватывающего текущую итерацию, и передает управление программе следующей итерации цикла.
Синтаксис оператора continue
следующий:
continue [n]
Аргумент [n]
является необязательным и может быть больше или равен 1. Когда задан [n]
, возобновляется n-й охватывающий цикл. continue 1
эквивалентно continue
.
В приведенном ниже примере, как только текущая итерируемая статья будет равна 2
, оператор continue 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
Вывод
Циклы — одна из фундаментальных концепций языков программирования. В языках сценариев, таких как Bash, циклы полезны для автоматизации повторяющихся задач.
Оператор break
используется для выхода из текущего цикла. Оператор continue
используется для выхода из текущей итерации цикла и запуска следующей итерации.