Цикли
Цикли, як і умови, є тими інструментальними засобами, які забезпечують управління порядком виконання команд. Bash підтримує цикли типу for, while, until і select. Тепер перейдемо до докладного розгляду кожного з них.
Зміст |
Оператор циклу for
Загальний синтаксис оператора for:
for змінна [in шаблон] do список команд done
Цикл for в bash значно відрізняється від циклу for в таких мовах програмування, як C або PHP. В результаті підстановки шаблону отримується список слів. При кожній ітерації змінна приймає кожне наступне значення цього списку, і виконуються команди, які стоять між do і done. Ітерації припиняються після вичерпання слів у списку.
$ For day in Mon Tue Wed Thu Fri; do echo "Сьогодні $ day"; done
Оператор циклу while
Загальний синтаксис оператора while:
while список1 do список2 done
Спершу виконується список1. Якщо він завершується успішно, тобто повертає нульовий код, управління переходить до списку2. Ітерації продовжуються до тих пір, поки результат виконання списку1 не стане ненульовим. Наприклад:
i = 10 while [$ i-gt 0]; do echo $ i i =$(($ i-1)) done; echo 'end'
Оператор циклу until
Загальний синтаксис оператора until:
until список1 do список2 done
Спершу виконується список1. Якщо він завершується неуспішно, тобто з ненульовим кодом повернення, управління переходить до списку2. Ітерації продовжуються до тих пір, поки результат виконання списку1 не стане нульовим. Наприклад:
i = 10 until [$ i-lt 0]; do echo $ i i =$(($ i-1)) done; echo 'end'
Оператор циклу select
Загальний синтаксис оператора select:
select змінна [in шаблон] do список done
В результаті підстановки шаблону отримується список слів. До цих слів оператор додає порядкові номери і виводить весь набір в стандартний потік помилок. Після цього виводиться запрошення і зчитується рядок з стандартного потоку введення. Якщо рядок містить номер, що відповідає якомусь слову зі списку, то змінна отримує його в якості значення. Якщо відповідного слова не було знайдено, то значенням змінної стає порожній рядок. Після цього виконується список команд, і ітерації продовжуються до тих пір, поки в рядку введення не попадеться символ кінця файлу або поки в списку команд не зустрінеться break або return.
Команди break і return служать для управління ходом виконання циклу. Команда break перериває виконання циклу, в той час як return повертає код результату (нульовий або ненульовий).
Оператор select корисний для створення нумерованих меню. Наприклад, у каталозі ~ / temp знаходиться 3 файла: calendar.txt, file.txt і readme. Приклад фрагмента скрипта, що дозволяє швидко переглянути будь-який з них:
echo "Виберіть файл для перегляду:" select file in ~ / temp / * Quit; do if [-f $ file]; then cat $ file; else break; fi done
Після запуску скрипта на екрані з'явиться наступне:
Виберіть файл для перегляду: 1) / home / istergul / temp / file.txt 2) / home / istergul / temp / calendar.txt 3) / home / istergul / temp / readme 4) Quit