Bash break и продолжить

Bash break и продолжить

Циклы позволяют выполнять одну или несколько команд несколько раз, пока не будет выполнено определённое условие. Однако иногда может потребоваться изменить ход выполнения цикла и завершить его или только текущую итерацию.

В Bash операторы break и continue позволяют контролировать выполнение цикла.

Оператор Bash break

Оператор 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 следующий:

 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

Заключение

Циклы — одна из основополагающих концепций языков программирования. В скриптовых языках, таких как Bash, циклы используются для автоматизации повторяющихся задач.

Оператор break используется для выхода из текущего цикла. Оператор continue используется для выхода из текущей итерации цикла и начала следующей.

Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.

терминал цикла bash

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *