Цикл Bash 'Until': навчальний посібник і приклади

Використання циклу «until» у сценарії Bash для перебору команд.

Bash (Bourne Again Shell) — це командний рядок і мова сценаріїв оболонки в операційних системах GNU/Linux. Це оболонка за замовчуванням для більшості дистрибутивів Linux.

Як і більшість мов сценаріїв, Bash надає синтаксис циклу для повторення подібних завдань кілька разів. У цій статті ми дізнаємося, як користуватися доки цикл у Bash.

Вступ

The доки цикл у Bash використовується для виконання команди (команд) (виконаних команд) кілька разів на основі виводу іншої команди (команд) (команд умов). Виконані команди продовжуватимуть виконуватися доти, доки команда умови не перестане працювати (тобто поверне ненульовий статус. Будь-яка команда в Linux повертає 0 для успіху і ненульове ціле число для невдачі). Це прямо протилежне поки цикл, у якому виконані команди продовжують виконуватися, доки команда умови не буде успішною.

Якщо є кілька умовних команд, оператор розглядає лише статус останньої команди в списку, тобто цикл буде виконуватися доти, доки остання команда в списку не буде працювати з ладу.

Загальний синтаксис

Загальний синтаксис для доки цикл у Bash:

поки не зробите

Список команд виконання буде працювати доти, доки остання команда в списку команд умов не вийде з ладу. Після успішного виконання останньої команди цикл завершується.

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

Розглянемо кілька прикладів.

Цикл, поки змінна не отримає певне значення: Наступний цикл виконується до значення змінної x становить 10.

x=0 доки [[ $x -eq 10 ]] не відтворить $x ((x++)) виконано

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

Потім всередині зробити...зроблено блоку, ми просто друкуємо значення x і збільшуємо його. Цикл завершується після успішного виконання команди умови, тобто коли $x дорівнює 10.

Примітка: Змінна індексу, яка буде використовуватися в циклі until, має бути ініціалізована або перед циклом until, або в командах умови, на відміну від циклу for, що дозволяє ініціалізувати змінну неявно.

З кількома командами умов: Наступний цикл створює 5 каталогів з іменем dir0, dir1, ... dir4.

z=0 до echo "Привіт" echo "Bye" [[ $z -eq 5 ]] do echo "Створення dir$z..." mkdir dir$z ((z++)) виконано

Перші команди echo «Hi» та echo «Bye» будуть виконані один раз повністю; їхній успіх чи невдача ніяк не впливає на те, як довго триватиме цикл.

Потім буде виконана тестова команда для перевірки значення змінної z. Поки ця команда продовжує працювати з ладу, тобто доки значення z не дорівнює 5, команди умов і виконувані команди продовжують виконуватися в порядку. Тут для кожної ітерації вона спочатку запускатиме 2 команди echo в умові, а потім перевіряє 3-ю команду умови значення z. Якщо не 5, він входить у цикл і виконує задані команди.

Перерви і продовжуй

Оператор розриву для умовного виходу

Ми також можемо використовувати умовний оператор якщо всередині петлі. The якщо оператор може використовуватися з a перерву оператор для умовного виходу з циклу.

x=0 доки [[ $x -eq 10 ]] зробить, якщо [[ $x -eq 5 ]] порушить fi echo $x ((x++)) зроблено

Наведений вище цикл до друкуватиме числа від 0 до 4. Потім, коли значення i дорівнює 5, він виривається з циклу. Це особливо корисно, коли потрібно вийти з циклу, коли команда дає певний вихід.

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

Bash також має a продовжувати оператор пропускає частину ітерації, що залишилася в циклі, якщо виконується певна умова.

x=0 доки [[ $x -eq 10 ]] робити, якщо [[ $x -eq 5 ]] продовжувати fi echo $x ((x++)) виконано

Цикл вище друкуватиме числа від 0 до 10, крім 5, тому що під час ітерації х=5 є оператор continue, який пропускає решту коду в циклі на початку з ітерацією х=6.

Використання циклів: скрипти та командний рядок

Синтаксис циклу можна використовувати в оболонці Bash безпосередньо або з файлу сценарію виконуваної оболонки. Схожий на для і поки петлі, один раз an доки Синтаксис циклу вводиться в оболонку, оболонка продовжує запит, щоб дозволити користувачеві продовжити виконання команд, які будуть зациклені.

Або користувач може зберегти це у файлі сценарію та виконати файл сценарію.

The #!/bin/bash на початку вказує інтерпретатор, який буде використовуватися під час виконання файлу. Хоча Bash є найбільш часто використовуваною оболонкою в наш час, деякі користувачі віддають перевагу оболонкам, як zsh, який слід вказати замість bash на початку цього файлу.

Щоб надати дозволи на виконання для цього файлу запустіть:

chmod +x test.sh

нарешті, щоб виконати файл, запустити:

./test.sh

Висновок

The доки цикл — ще одна важлива функція сценаріїв Bash. Це має особливе значення в складних сценаріях, коли очікується, що певний набір програм поверне статус збою, а деякі інші команди мають бути виконані для реєстрації збою, детального відображення помилки або просто для виконання деяких альтернативних програм.

Категорія: Linux