Веб-Мастеру

Команды break и continue. Оболочка Bash. Linux.3 мин для чтения

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

В 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]

 

Читать  10 примеров команды Netstat в Unix/Linux

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

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

Источник: AndreyEx.ru

Похожие записи