Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod_lab_OSUNIX_2006-ukr.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
759.81 Кб
Скачать

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.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]