Циклы позволяют выполнять одну или несколько команд несколько раз, пока не будет выполнено определенное условие. Однако иногда вам может потребоваться изменить ход цикла и завершить цикл или только текущую итерацию.
В 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
используется для выхода из текущей итерации цикла и начала следующей итерации.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.