Циклы позволяют запускать одну или несколько команд несколько раз, пока не будет выполнено определенное условие. Однако иногда вам может понадобиться изменить поток цикла и завершить цикл или только текущую итерацию.
В Bash операторы break и continue позволяют контролировать выполнение цикла.
Команда break в 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 "Номер: $i" ((i++)) if [[ $i -eq 2 ]]; then break fi done echo 'Все Сделано!'
Номер: 0 Номер: 1 Все Сделано!
Вот пример использования команды 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 'Все Сделано!'
j: 1 i: 1 j: 1 i: 2 j: 1 i: 3 Все Сделано!
Если вы хотите выйти из внешнего цикла, используйте 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 'Все Сделано!'
j: 1 Все Сделано!
Команда continue в Bash
Команда continue пропускает оставшиеся команды внутри тела цикла для текущей итерации и передает управление программой к следующей итерации цикла.
Синтаксис команды continue следующий:
continue [n]
Аргумент [n] является необязательным и может быть больше или равно 1. Когда [n] дается, п-й цикл возобновляются. continue 1 эквивалентно continue.
В приведенном ниже примере, когда в текущем цикле элемент равен 2, то оператор continue вернет к началу цикла и продолжить со следующего цикла.
i=0 while [[ $i -lt 5 ]]; do ((i++)) if [[ "$i" == '2' ]]; then continue fi echo "Номер: $i" done echo 'Все Сделано!'
Номер: 1 Номер: 3 Номер: 4 Номер: 5 Все Сделано!
Следующий скрипт печатает числа 1 через 50, которые делятся на 9.
Если число не делится на 9, оператор continue пропускает команду echo и передает управление на следующую итерацию цикла.
for i in {1..50}; do if [[ $(( $i % 9 )) -ne 0 ]]; then continue fi echo "Делится на 9: $i" done
Делится на 9: 9 Делится на 9: 18 Делится на 9: 27 Делится на 9: 36 Делится на 9: 45
Вывод
Циклы являются одним из фундаментальных понятий языков программирования. В языках сценариев, таких как Bash, циклы полезны для автоматизации повторяющихся задач.
Оператор break используется для выхода из текущего цикла. Оператор continueиспользуется для выхода из текущей итерации цикла и начала следующей итерации.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.