Операторы break и continue в Bash

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

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

Оператор break в Bash

Оператор break завершает текущий цикл и передает управление программой команде, которая следует за завершенным циклом. Он используется для выхода из цикла for , while , until или select . 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 чтобы завершить второй охватывающий цикл:

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 в Bash

Оператор 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 используется для выхода из текущей итерации цикла и начала следующей итерации.

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

Оставьте комментарий