Bash 'While' Loop: Учебное пособие и примеры

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

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

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

Введение

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

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

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

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

пока делать

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

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

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

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

x = 0, а [[$ x -ne 10]] do echo $ x ((x ++)) done

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

Затем внутри делать ... сделано блок, мы печатаем значение x и увеличиваем его. Как только значение x равно 10, тестовая команда возвращает ненулевой статус, и цикл завершается.

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

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

z = 0 while echo "Список файлов:" ls -l [[$ z -ne 5]] do echo "Создание каталога $ z ..." mkdir dir $ z ((z ++)) done

Первые команды echo "Список файлов:" и ls -l выполнится один раз полностью; их успех или неудача никак не повлияют на продолжительность цикла.

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

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

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

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

x = 0, а [[$ x -ne 10]] делать, если [[$ x -eq 5]] break fi echo $ x ((x ++)) done

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

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

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

x = 0, а [[$ x -ne 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. Цикл while имеет то же использование, что и цикл until, за исключением того, что он используется для запуска альтернативных команд / программ, когда конкретная программа завершается успешно. Это часто находит свое применение в расширенных сетевых сценариях, сценариях обслуживания системы и т. Д.

Категория: Linux