В сценариях Bash оператор break помогает обеспечить контроль внутри циклических операторов. Вместо ожидания условия завершения оператор break помогает выйти из цикла до наступления условия завершения. Операторы цикла управления (break и continue) логически сочетаются с условными операторами, такими как if elif else, для создания особых ситуаций внутри циклов.
Это руководство научит вас эффективно использовать оператор break в циклах сценария Bash.
Оператор break в Bash
Оператор break завершает текущую итерацию цикла и выходит из цикла. В сочетании с условием break помогает обеспечить выход из цикла до наступления конечного случая.
Оператор Bash break всегда применяется к циклам.
Синтаксис следующий:
1 | break [целое число] |
Целое число необязательно, по умолчанию оно равно 1. Число определяет глубину прерывания для вложенных циклов. Поэтому, чтобы выйти из вложенного цикла for, используйте break 2.
Примеры Bash break
Приведенные ниже примеры демонстрируют выход из различных типов циклов с помощью оператора break. Примеры включают:
- Стандартные циклы while, for и until.
- Команда select.
Каждый приведенный ниже пример сценария Bash сопровождается пояснением.
Выход из цикла while
Используйте оператор break для выхода из цикла while при выполнении определенного условия. В следующем сценарии используется прерывание внутри цикла while:
1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/bash i=0 while [[ $i -lt 12 ]] do if [[ "$i" == '2' ]] then echo "$i!" break fi echo $i ((i++)) done |
Каждая строка сценария выполняет следующие действия:
- Строка 2 определяет и устанавливает переменную i в 0.
- Строка 3 запускает цикл while. Конечным условием будет, если переменная меньше одиннадцати ($i -lt 12).
- В строке 5 выполняется проверка с помощью оператора if. Если переменная равна двум ("$i" == 2), программа выходит из цикла while с помощью оператора Bash break в строке 8. В этом случае код переходит к строке 13. Если переменная представляет собой другое число, сценарий продолжается, как и ожидалось, в строке 10.
Выполните сценарий, чтобы увидеть результаты.
Программа перечисляет числа до 2 и завершает выполнение скрипта.
Использование break внутри циклов for
Цикл for автоматически увеличивает переменную. Чтобы добавить условный оператор и выйти из цикла for раньше, используйте оператор break. В следующем коде показан пример использования break внутри цикла for:
1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/bash for i in {1..10} do if [[ $i == '2' ]] then echo "Число $i!" break fi echo "$i" done echo "Готово!" |
Когда целочисленное значение становится равным двум ($i == '2'), программа печатает сообщение и выходит из цикла for благодаря оператору break.
Вывод терминала for_break.sh
В результате выполнение скрипта завершает программу, когда переменная i достигает двух, и переходит к последней строке кода.
Выход из цикла until
Цикл Bash until является одной из трех фундаментальных конструкций цикла. Добавьте оператор break для управления потоком программы и выхода из цикла по другому условию.
Ниже приведен пример программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/bin/bash i=0 until [[ $i -gt 10 ]] do if [[ $i -eq 2 ]] then echo "Число $i!" break fi echo $i ((i++)) done echo "Готово!" |
Хотя цикл until содержит условие завершения ($i -gt 10), тело цикла содержит другое условие ($i -eq 2). Поскольку второе условие наступает раньше первого, программа переходит в тело оператора if, которое содержит оператор Bash break для выхода из цикла.
вывод терминала until_break.sh
Выполнение скрипта демонстрирует, что программа завершается, когда переменная i достигает значения 2.
Использование break внутри цикла select
Команда select создает меню и ведет себя как бесконечный цикл, хотя это не одна из основных конструкций цикла. Чтобы элегантно выйти из оператора select, создайте случай, для которого программа заканчивается, и используйте break для выхода из цикла.
Приведенный ниже код демонстрирует текстовую игру по угадыванию чисел с использованием оператора select:
1 2 3 4 5 6 7 8 9 10 11 12 | #!/bin/bash/ PS3="Угадай мое любимое число: " select i in {1..10} do echo "Выбранное число: $i" if [[ $REPLY -eq 2 ]] then echo "Правильно! $i - мой фаворит. Спасибо за игру!" break fi echo "Не мой фаворит. Попробуйте еще раз!" done |
Код выполняет следующее:
- В строке 3 выводится инструктивное сообщение. Оператор select печатает это сообщение после перечисления всех вариантов и после каждого неверного предположения.
- Строка 5 запускает оператор select и определяет варианты как числа от 1 до 10.
- В строке 8 проверяется, равно ли выбранное число 2, что является правильной догадкой. Если проверка пройдена, оператор Bash break помогает выйти из цикла и завершает игру.
Для дальнейшего развития сценария попробуйте добавить оператор elif для проверки выходящих за пределы диапазона входных данных или изменить его на оператор case для рассмотрения различных ситуаций с входными данными.
Заключение
После изучения примеров из этого руководства вы знаете, как использовать оператор break для управления циклом.