Цикли

Матеріал з Wiki TNEU
Версія від 23:24, 20 вересня 2012; Donserg (Обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

Цикли, як і умови, є тими інструментальними засобами, які забезпечують управління порядком виконання команд. 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
Особисті інструменти
Простори назв

Варіанти
Дії
Навігація
Інструменти