Цикл Bash 'until': руководство и примеры

Использование цикла «до» в сценарии Bash для перебора команд.

Bash (Bourne Again Shell) - это командная строка оболочки и язык сценариев в операционных системах GNU / Linux. Это оболочка по умолчанию для большинства дистрибутивов Linux.

Как и большинство языков сценариев, Bash предоставляет синтаксис цикла для многократного повторения одинаковых задач. В этой статье мы узнаем, как использовать до того как цикл в Баше.

Введение

В до того как цикл в Bash используется для многократного выполнения команды (команд) (выполненных команд) на основе вывода другой команды (команд) (команд условий). Выполненные команды будут выполняться до тех пор, пока команда условия не перестанет давать сбой (т.е. не вернет состояние, отличное от нуля. Любая команда в Linux возвращает 0 в случае успеха и ненулевое целое число в случае ошибки). Это полная противоположность пока цикл, в котором выполняемые команды продолжают выполняться до тех пор, пока команда условия не будет успешной.

Если имеется несколько команд условий, оператор учитывает только состояние последней команды в списке, то есть цикл будет выполняться до тех пор, пока последняя команда в списке не даст сбой.

Общий синтаксис

Общий синтаксис для до того как цикл в Bash:

пока не сделаю

Список команд выполнения будет выполняться до тех пор, пока последняя команда в списке команд условия не завершится ошибкой. Как только последняя команда будет успешной, цикл завершится.

Пользователи могут указать любой исполняемый файл в списках команд. Это могут быть стандартные программы Linux или пользовательские программы или сценарии. Каждая команда должна быть либо на новой строке, либо разделена точкой с запятой в той же строке.

Давайте посмотрим на несколько примеров.

Цикл до тех пор, пока переменная не получит определенное значение: Следующий цикл выполняется до значения переменной Икс 10.

x = 0, пока [[$ x -eq 10]] do echo $ x ((x ++)) done

На каждой итерации мы проверяем, равно ли значение x 10. Значение проверяется с помощью контрольная работа команда. [[ Выражение ]] это синтаксис тестовой команды (см. мужской тест).

Затем внутри делать ... сделано block, мы просто печатаем значение x и увеличиваем его. Цикл завершается после успешного выполнения команды условия, т. Е. Когда $ x равно 10.

Примечание: Переменная индекса, которая будет использоваться в цикле «до», должна быть инициализирована либо перед циклом «до», либо в командах условия, в отличие от цикла for, который позволяет инициализировать переменную неявно.

С несколькими командами условий: Следующий цикл создает 5 каталогов с именами dir0, dir1, ... dir4.

z = 0 до тех пор, пока echo "Hi" echo "Bye" [[$ z -eq 5]] do echo "Создание каталога $ z ..." mkdir dir $ z ((z ++)) done

Первые команды echo «Hi» и echo «Bye» будут выполнены один раз полностью; их успех или неудача никак не повлияют на продолжительность цикла.

Затем будет выполнена тестовая команда для проверки значения переменной z. Пока эта команда не завершится ошибкой, то есть до тех пор, пока значение z не станет 5, команды условия и выполненные команды будут выполняться по порядку. Здесь для каждой итерации сначала выполняется 2 команды эха в условии, а затем команда 3-го условия проверяет значение z. Если не 5, он входит в цикл и выполняет заданные команды.

Прервать и продолжить

Оператор Break для условного выхода

Мы также можем использовать условный оператор если внутри петли. В если оператор можно использовать с ломать оператор для условного выхода из цикла.

x = 0 до [[$ x -eq 10]] выполнить if [[$ x -eq 5]] break fi echo $ x ((x ++)) done

Вышеупомянутый цикл until напечатает числа от 0 до 4. Затем, когда значение i равно 5, он выйдет из цикла. Это особенно полезно, когда нужно выйти из цикла, когда команда дает определенный вывод.

Оператор Continue для условного пропуска итерации

Баш также имеет Продолжать оператор, чтобы пропустить оставшуюся часть итерации в цикле, если выполняется определенное условие.

x = 0 до [[$ x -eq 10]] выполнить, если [[$ x -eq 5]] продолжить fi echo $ x ((x ++)) выполнено

Вышеупомянутый цикл будет печатать числа от 0 до 10, кроме 5, потому что во время итерации х = 5 есть оператор continue, который пропустит остальную часть кода в цикле в начале с итерацией х = 6.

Использование циклов: скрипты и командная строка

Синтаксисы цикла можно использовать в оболочке Bash напрямую или из исполняемого файла сценария оболочки. Похожий на за и пока петли, один раз до того как В оболочке вводится синтаксис цикла, оболочка продолжает подсказку, позволяя пользователю продолжить выполнение команд для цикла.

Или же пользователь может сохранить это в файле сценария и выполнить файл сценария.

В #! / bin / bash в начале указывает интерпретатор, который будет использоваться при выполнении файла. Хотя Bash является наиболее часто используемой оболочкой в ​​настоящее время, некоторые пользователи предпочитают такие оболочки, как zsh, который следует указать вместо bash в начале этого файла.

Чтобы дать разрешения на выполнение для этого файла запустите:

chmod + x test.sh

Ну наконец то, выполнить файл, бегать:

./test.sh

Вывод

В до того как цикл - еще одна важная функция в сценариях Bash. Это имеет особое значение в сложных сценариях, когда ожидается, что определенный набор программ вернет статус сбоя, а некоторые другие команды должны быть выполнены для регистрации сбоя, подробного отображения ошибки или просто выполнения некоторых альтернативных программ.

Категория: Linux