- •1. Введення
- •2. Прості засоби|кошти| shell
- •2.1. Структура команд
- •2.2. Угрупування команд.
- •2.3. Перенаправлення команд
- •2.4. Генерація імен файлів.
- •2.5. Командні файли.
- •3. Середовище|середа| shell (змінні і параметри)
- •3.2. Екранування
- •3.3. Маніпуляції з|із| shell-змінними
- •3.4. Експорт змінних
- •3.5. Параметри
- •3.6. Підстановки shell-інтерпретатора
- •3.7. Програмне середовище
- •4. Програмні структури
- •4.1. Команда test ("[ ]")
- •4.2. Умовний оператор "if"
- •4.3. Оператор виклику ("case")
- •4.4. Оператор циклу з|із| переліком|перерахуванням| ("for")
- •4.5. Оператор циклу з|із| передумовою ("while")
- •4.6. Оператор циклу з|із| постумовою ("until")
- •4.7. Порожній оператор
- •4.8. Функції в shell
- •4.9. Обробка переривань ("trap")
- •5. Розробка графічного інтерфейсу за допомогою бібліотеки Qt3. Створення в kDevelop базової структури додатку
- •5.1. Словник
- •5.2. Створення|створіння| проекту
- •5.3. Робота з Qt Designer
- •5.4. Розробка інтерфейсу програми
- •5.5. Додавання|добавка| виджетов|
- •5.6. Створення|створіння| проміжків між виджетами|
- •5.7. Сигнали і слоти
- •5.8. Написання коду
- •6. Литература
4.5. Оператор циклу з|із| передумовою ("while")
Структура "while", що також забезпечує виконання розрахунків, переважно тоді, коли невідомий наперед|заздалегідь| точний список значень параметрів або цей список повинен бути одержаний|отриманий| в результаті|унаслідок,внаслідок| обчислень|підрахунків| в циклі.
Оператор циклу "while" має структуру:
while умова
do
список команд
done
де "while" - службове слово що визначає тип циклу з|із| дійсною умовою. Список команд в тілі циклу (між "do" і "done") повторюється до тих пір, поки зберігається істинність умови (тобто код завершення останньої команди в тілі циклу рівний "0") або цикл не буде перерваний зсередини спеціальними командами ("break", "continue" або "exit"). При першому вході в цикл умова повинна виконуватися.
###
# print-50: Структура "while"
# Розрахунок дозволяє надрукувати|видрукувати| 50
# екземплярів|примірників| файлу "file-22"
n=0
while [ $n -lt 50 ] # поки|доки| n < 50
do
n=`expr $n + 1`
cat file-22 > /dev/lp
done
Звернемо увагу на те, що змінній "n" спочатку привласнюється значення 0, а не порожній|пустий| рядок, оскільки|тому що| команда "expr" працює з|із| shell-змінними як з|із| цілими числами, а не як з|із| рядками.
n=`expr $n + 1`
тобто при кожному виконанні значення "n" збільшується на 1.
Як і взагалі в житті, можна реалізувати те ж саме і складніше. Розрахунок "рr-br" приведений для ілюстрації нескінченного|безконечного| циклу і використання команди "break", яка забезпечує припинення циклу.
###
# рr-br: Структура "while" з|із| "break"
# Розрахунок дозволяє надрукувати|видрукувати| 50
# екземплярів|примірників| файлу "file-22"
n=0
while true
do
if [ $n -lt 50 ] # якщо n < 50
then n=`expr $n + 1`
else break
fi
cat file-22 > /dev/lp
done
Команда "break [n]" дозволяє виходити з|із| циклу. Якщо "n" відсутній, то це еквівалентно "break 1". "n" указує|вказує| число вкладених циклів, з|із| яких треба вийти, наприклад, "break 3" - вихід з|із| трьох вкладених циклів.
На відміну від команди "break" команда "continue [n]" лише припиняє виконання поточного циклу і повертає на ПОЧАТОК циклу. Вона також може бути з|із| параметром. Наприклад, "continue 2" означає вихід на початок другого (якщо вважати|лічити| з|із| глибини) вкладеного циклу.
Команда "exit [n]" дозволяє вийти взагалі з процедури з|із| кодом повернення "0" або "n" (якщо параметр "n" вказаний). Ця команда може використовуватися не тільки|не лише| в циклах. Навіть в лінійній послідовності команд вона може бути корисна при відладці, щоб припинить виконання (поточного) розрахунку в заданій точці.
4.6. Оператор циклу з|із| постумовою ("until")
Оператор циклу "until" має структуру:
until умова
do
список команд
done
де "until" - службове слово що визначає тип циклу з|із| помилковою умовою. Список команд в тілі циклу (між "do" і "done") повторюється до тих пір, поки зберігається помилковість умови або цикл не буде перерваний зсередини спеціальними командами ("break", "continue" або "exit"). При першому вході в цикл умова не повинна виконуватися.
Відмінність|відзнака| від оператора "while" полягає в тому, що умова циклу перевіряється на помилковість (на ненульовий код завершення останньої команди тіла циклу) перевіряється ПІСЛЯ|потім| кожного (у тому числі і першого!) виконання команд тіла циклу.
Програмістів, знайомих з|із| операторами "until" в інших мовах|язиках| може спочатку збивати така семантика цього оператора.
Приклади|зразки|.
until false
do
read x
if [ $x = 5 ]
then echo enough ; break
else echo some more
fi
done
Тут програма з|із| нескінченним|безконечним| циклом чекає введення слів (повторюючи на екрані фразу "some more"), поки|доки| не буде введене|запроваджене| "5". Після|потім| цього видається "enough" і команда "break" припиняє виконання циклу.
Інший приклад|зразок| ("Очікування|чекання| півдня") ілюструє можливість|спроможність| використовувати в умові обчислення|підрахунку|.
until date | grep 12:00:
do
sleep 30
done
Тут кожні 30 секунд виконується командний рядок умови. Команда "date" видає поточну дату і час. Команда "grep" одержує|отримує| цю інформацію через конвейєр і намагається|пробує| сумістити|поєднати| заданий шаблон "12:00:" з часом|згодом|, видаваним командою "date". При неспівпаданні "grep" видає код повернення "1", що відповідає значенню "брехня", і цикл "виконує очікування|чекання|" протягом 30 секунд, після чого повторюється виконання умови. Опівдні|ополудні| (можливо з|із| декількома секундами) відбудеться порівняння, умова стане істинною, "grep" видасть на екран відповідний рядок і робота циклу закінчиться.