
- •7.080403 – Програмне забезпечення автоматизованих систем
- •1 Структура файлової системи, базовий та розгорнутий перелік команд ос unix
- •1.2 Підготовка до роботи
- •1.3 Методичні вказівки до виконання роботи
- •1.3.1 Процедура віддаленої реєстрації користувача на платформі unix
- •1.3.2 Файлова система
- •1.3.3 Середовище виконання процесів
- •1.3.4 Базові команди системи
- •1.4 Порядок виконання роботи
- •1.5 Завдання
- •1.7 Контрольні запитання
- •2 Редактор VI
- •2.3.3 Команди руху маркера по екрану монітора
- •2.3.4 Команди редактора, що забезпечують перехід у режим вводу
- •2.3.6 Команди копіювання
- •2.3.7 Команди пошуку вказаної символьної конструкції або літери
- •2.4 Порядок виконання роботи
- •2.5 Завдання
- •2.7 Контрольні запитання
- •3 Shell. Змінні оболонки shell. Застосування файла .Profile
- •3.3.2 Команда echo
- •3.3.3 Змінні середовища виконання
- •3.3.4 Файл .Profile
- •3.3.5 Використання лапок
- •3.3.6.1 Позиційні змінні (параметри)
- •3.3.6.2 Літерно-цифрові змінні (користувача)
- •3.3.6.3 Раніше визначені спеціальні змінні
- •3.3.7 Переадресація вводу-виводу за допомогою дескрипторів файлів
- •3.3.8 Шаблони, підстановки
- •3.3.9 Спеціальні символи shell операторів
- •3.4 Порядок виконання роботи
- •3.5 Завдання
- •3.7 Контрольні запитання
- •4 Shell. Оператори облонки shell. Програмування в оболонці shell
- •4.1 Мета роботи
- •4.2 Підготовка до роботи
- •4.3 Методичні вказівки до виконання роботи
- •4.3.1 Оператори мови shell
- •4.3.2 Синтаксис shell
- •If список команд
- •4.3.3 Створення та організація процедури у shell
- •4.3.4 Команди підтримки та їх особливості
- •4.3.4.1 Умовна перевірка: test
- •4.3.4.2 Оцінка арифметичних виразів expr
- •4.3.4.3 Команди true і false
- •4.3.4.4 Внутрішньорядкове введення документів
- •4.3.5 Передача параметрів до процедури shell
- •4.3.6 Приклади використання команд shell
- •4.3.6.1 Використання оператора if
- •If список команд
- •If список команд
- •4.3.6.2 Використання оператора case
- •4.3.6.3 Умовні цикли while та until
- •4.3.6.4 Організація циклу для списку: for
- •4.3.6.5 Керування циклами: break та continue
- •4.3.6.6 Кінець файла та вихід
- •4.4 Порядок виконання роботи
- •4.5 Завдання
- •4.7 Контрольні запитання
- •5 Мережні протоколи tcp/ip. Протокол telnet та протокол обміну файлами ftp
- •5.3.1.1 Командний режим telnet
- •5.4 Порядок виконання роботи
- •5.5 Завдання
- •6 Awk. Програмування на мові awk
- •6.3.1 Структура програми на мові awk
- •6.3.2 Поля
- •6.3.3 Вивід на друк
- •6.3.4 Форматований висновок
- •6.3.5 Прості шаблони
- •6.3.5 Вбудовані змінні
- •6.3.6 Змінним, обумовленим користувачем
- •6.3.7 Повідомлення про помилки
- •6.3.8 Вираження
- •6.3.8.2 Відносні вираження
- •6.3.8.3 Регулярні вираження
- •6.3.8.5 Символи
- •6.3.8.6 Комбінації виражень
- •6.3.8.6 Діапазони виражень
- •6.3.8.9 Вбудовані змінні
- •6.3.8.10 Арифметичні дії
- •6.3.8.11 Змінні поля
- •6.3.8.12 Деякі лексичні угоди
- •6.3.8.13 Вивід у файли
- •6.3.8.14 Вивід у канали
- •6.4 Порядок виконання роботи
- •6.5 Завдання
- •6.7 Контрольні запитання
- •Перелік рекомендованої літератури
4.3.2 Синтаксис shell
При застосуванні змінних, команд shell та ОС, у командному файлі, використовують такі синтаксичні конструкції:
ім’я=значення
команда: проста_команда
( список-команд )
{ список-команд }
for ім’я
do
список команд
done
for ім’я in слово
do
список команд
done
while список команд
do
список команд
done
until список команд
do
список команд
done
case слово in
case-часть
esac
If список команд
then
список команд
else-часть
fi
команда | команда
команда && команда
команда || команда
список команд ;
список команд &
список команд ; команда
список команд & команда
case-частина: шаблон ) список команд ;;
else-частина: elif список команд
then список команд
else-часть
else список команд
4.3.3 Створення та організація процедури у shell
Процедура у shell може бути створена за два кроки. Перший – створення звичайного текстового файла. Другий – зміна прав доступу до файла. Файл має бути виконуваним. У такому разі shell не відщеплює новий процес для виконання командного файла. Наприклад:
proc args
а не
sh proc args
Процедури shell можуть створюватися динамічно. Так, процедура може генерувати файл з командами, викликати інший інтерпретатор для виконання створеного файла, а потім вилучати файл, що виконався. Тому багато користувачів надають перевагу процедурам оболонки, при створенні програм керування. Розглянемо більш досконально ці переваги:
1. Процедуру shell просто створювати та легко з нею працювати, оскільки це звичайний текстовий файл.
2. У процедури shell відсутній об'єктний код, який потребував би компіляції.
3. Процедуру shell можна швидко створити та вилучити, використавши кілька разів.
4. Так як процедури shell написані мовою високого рівня, та мають тільки текст, то їх дуже легко зрозуміти і корегувати.
4.3.4 Команди підтримки та їх особливості
Процедури shell можуть використовувати будь-яку команду UNIX. Наведені команди найбільш часто застосовуються у процедурах, так як спеціально створені для такого використання.
4.3.4.1 Умовна перевірка: test
Команда test перевіряє висловлювання, зазначене як аргумент, і коли висловлювання правильне, то команда завершує роботу з нульовим кодом. У протилежному випадку повертається ненульовий код завершення. test відповідає ненульовим кодом у випадку відсутності аргумента. Змінні shell, у висловлюваннях, які перевіряються, мають бути у подвійних лапках, коли є ймовірність, що вони пусті або невизначені.
Як друга форма запису команди test використовуються квадратні дужки, наприклад:
[ висловлювання ] або test висловлювання
Слід пам’ятати, що поділи перед та після висловлювання, у квадратних дужках, обов’язкові.
В подальшому наведемо неповний список опцій команди test, які можуть бути застасовані при формуванні умовних конструкцій:
-r file – істинно, коли вказаний файл існує та користувач має доступ для читання;
-w file – істинно, коли вказаний файл існує та користувач має доступ для запису;
-x file – істинно, коли вказаний файл існує та користувач має право виконати файл;
-s file – істинно, коли вказаний файл існує та має ненульову довжину;
-d file – істинно, коли вказаний файл є каталогом;
-f file – істинно, коли вказаний файл є звичайним файлом (не пристрій);
-z sl – істинно, коли довжина рядка sl дорівнює нулю;
-n sl – істинно, коли довжина рядка sl не дорівнює нулю;
-t fildes – істинно, коли відкритий файл з дескриптором fildes відповідає терміналу. Коли fildes не зазначений, то із замовчування рахується fildes=1;
s1 = s2 – істинно, коли рядки s1 та s2 ідентичні;
s1 != s2 – істинно, коли рядки s1 та s2 різні;
s1 – істинно, коли рядки s1 не нульові;
n1 -eq n2 – істинно, коли цілі числа n1 та n2 алгебраїчно рівні.
Інші алгебраїчні порівняння позначаються:
-ne (не дорівнює), -gt (більш ніж), -ge (більша або дорівнює), -lt (менш ніж), -le (менш або дорівнює).
Усі ці опції можна поєднати з такими операторами:
! – оператор унарного заперечення;
-а – бінарний логічний оператор AND (і);
-o – бінарний логічний оператор OR (або), має менший пріоритет, ніж AND; (вираж.) – дужки для групування. За відсутності дужок перевірка висловлювання йде зліва направо.
Пам’тайте, що всі опції, оператори, імена файлів та інше є окремими аргументами для команди test.