- •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. Литература
3.4. Експорт змінних
У ОС UNIX існує поняття процесу. Процес виникає тоді, коли запускається на виконання яка-небудь команда (розрахунок).
Наприклад, при наборі на клавіатурі "р <Enter>" породжується процес розрахунку "р". У свою чергу "р" може породити інші процеси. Допустимо, що "р" викликає|спричиняє| розрахунки "р1" і "р2", які послідовно породжують відповідні процеси.
У|в,біля| кожного процесу є своє середовище|середа| - безліч доступних йому змінних. Наприклад, до запуску розрахунку "р" вже існувало середовище|середа|, в якому вже були визначені деякі змінні (про стандартні змінні мова|промова| піде дещо пізнішим). Запуск "р" породжує нове середовище|середу|; вже в ній будуть породжені розрахунки "р1" і "р2".
Змінні локальні в рамках|у рамках| процесу, в якому вони оголошені, тобто де їм привласнені значення (опис змінних відсутній - вони всі одного типа). Для того, щоб вони були доступні і іншим породжуваним процесам, треба передати їх явним чином. Для цього використовується вбудована команда "export".
Приклад|зразок|.
Хай|нехай| розрахунок (командний файл) "p", що має вигляд|вид|:
# розрахунок p
echo Розрахунок p
varX=0 varY=1
echo varX=$varX varY=$varY
export varY
p1 # виклик розрахунку p1
p2 # виклик розрахунку p2
echo Знову розрахунок p: varX=$varX varY=$varY
викликає|спричиняє| командні файли "p1" і "p2", що мають вигляд|вид|:
# розрахунок p1
echo Розрахунок p1
echo varX=$varX varY=$varY
varX=a varY=b
echo varX=$varX varY=$varY
export varX
# розрахунок p2
echo Розрахунок p2
echo varX=$varX varY=$varY
varX=A varY=B
echo varX=$varX varY=$varY
export varY
На екран будуть видані наступна|слідуюча| інформація:
Розрахунок p
varX=0 varY=1
Розрахунок p1
varX= varY=1
varX=a varY=b
Розрахунок p2
varX= varY=1
varX=A varY=B
Знову розрахунок p: varX=0 varY=1
З|із| прикладу|зразка| видно|показно|, що значення змінних експортуються тільки|лише| в розрахунки, що викликаються|спричиняються| (і не передаються "вгору|угору|" і "убік"). Експортувати змінні можна і командою "set" з|із| прапором "-a".
Відмітимо|помітимо|, що на передачу значень змінних ніякого|жодного| впливу не надає|робить,виявляє,чинить| "фізичне" взаємне розташування (файлів) розрахунків у файловій системі. |
3.5. Параметри
У командний файл можуть бути передані параметри. У shell використовуються позиційні параметри (тобто істотна|суттєва| черговість їх проходження|дотримання|). У командному файлі відповідні параметрам змінні (аналогічно shell-змінним) починаються з символу "$", а далі слідує|прямує| одна з цифр від 0 до 9:
Хай|нехай| розрахунок "examp-1" викликається|спричиняється| з|із| параметрами "cock" і "tail". Ці параметри потрапляють|попадають| в нове середовище|середу| під стандартними іменами "1" і "2". У (стандартної) змінній з|із| ім'ям "0" зберігатиметься ім'я викликаного|спричиненого| розрахунку.
При зверненні до параметрів перед цифрою ставиться символ долара "$" (як і при зверненні до змінних):
$0 |
відповідає імені даного командного файлу; |
$1 |
перший по порядку параметр; |
$2 |
другий параметр і т.д. |
Хай|нехай| командний файл з|із| ім'ям "examp-1" має вигляд|вид|
echo Це розрахунок $0:
sort $2 >> $1
cat $1
а файли "cock" і "tail" містять|утримують| відповідно
cock:
Це відсортований файл:
tail:
1
3
2
Тоді після|потім| виклику команди
examp-1 cock tail
на екрані буде
Це розрахунок examp-1:
Це відсортований файл:
1
2
3
Оскільки число змінних, в які можуть передаватися параметри, обмежено однією цифрою, тобто 9-у ("0", як вже наголошувалося має особливий сенс), то для передачі більшого числа параметрів використовується спеціальна команда "shift".
Розглянемо|розгледимо| її дію на прикладі|зразку|.
Хай|нехай| командний файл "many" викликається|спричиняється| з|із| 13-у параметрами
many 10 20 30 40 50 60 70 80 90 100 110 120 130
І має вигляд|вид|
###
# many: Передача великого числа параметрів.
echo "$0: Багато параметрів"
echo " Загальне|спільне| число параметрів = $#
Початковий|вихідний| стан: $1 $5 $9 "
shift
echo "1 зрушення|зсув|: первый=$1 пятый=$5 девятый=$9"
shift 2
echo "1 + 2 = 3 зрушення|зсуви|: первый=$1 пятый=$5 девятый=$9"
perem=`expr $1 + $2 + $3`
echo $perem
В результаті|унаслідок,внаслідок| першого застосування|вживання| команди "shift" другий параметр розрахунку викликається|спричиняється| як $1, третій параметр викликається|спричиняється| як $2, ... десятий|десятеро| параметр, який був початково|вихідний| недоступний, викликається|спричиняється| як $9. Але|та| став недоступним перший параметр!
Після|потім| виконання цього розрахунку на екрані буде:
many: Багато параметрів
Загальне|спільне| число параметрів = 13
Початковий|вихідний| стан: 10 50 90
1 зрушення|зсув|: первый=20 пятый=60 девятый=100
1 + 2 = 3 зрушення|зсув|: первый=40 пятый=80 девятый=120
150
Своєрідний підхід до параметрів дає команда "set".
Наприклад, фрагмент розрахунку
set а b з|із|
echo первый=$1 второй=$2 третий=$3
видасть на екран
первый=a второй=b третий=c
тобто команда "set" встановлює значення параметрів. Це буває дуже зручно. Наприклад, команда "date" видає на екран поточну дату, скажімо, "Mon May 01 12:15:10 2000", що складається з п'яти слів, тоді
set `date`
echo $1 $3 $5
видасть на екран
Mon 01 2000
Команда "set" дозволяє також здійснювати контроль виконання програми, наприклад:
set -v |
на термінал виводяться рядки, що читаються shell. |
Set +v |
відміняє|скасовує| попередній режим. |
Set -х |
на термінал виводяться команди перед виконанням. |
Set +x |
відміняє|скасовує| попередній режим. |
Команда "set" без параметрів виводить на термінал стан програмного середовища|середи| (см далі).