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