Цикл Bash 'While': підручник і приклади

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

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

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

Вступ

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

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

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

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

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

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

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

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

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

x=0 у той час як [[ $x -ne 10 ]] робить echo $x ((x++)) виконано

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

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

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

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

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

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

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

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

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

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

x=0 у той час як [[ $x -ne 10 ]] do if [[ $x -eq 5 ]] break fi echo $x ((x++)) done

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

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

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

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

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

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

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

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

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

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

chmod +x test.sh

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

./test.sh

Висновок

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

Категорія: Linux