Відмінності між версіями «Цикли»

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

Поточна версія на 23:24, 20 вересня 2012

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

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