Программирование на Shell (Unix)


ПРОГРАММНЫЕ СТРУКТУРЫ - часть 3


СЛОЖНЫЕ УСЛОВИЯ:

Реализуются с помощью типовых логических операций:

! (not) инвертирует значение кода завершения.
-o (or) соответствует логическому "ИЛИ".
-a (and) соответствует логическому "И".

ПРЕДУПРЕЖДЕНИЕ. Не забывайте о пробелах.

Примеры.

[ ! privet ] ; echo $? 1 x=privet; export x; [ "$x" -a -f specific ] ; echo $? 0 x="";export x; [ "$x" -a -f specific ] ; echo $? 1 x="";export x; [ "$x" -a -f specific -o privet ] ; echo $? 0 x="";export x; [ "$x" -a -f specific -o ! privet ] ; echo $? 1

СОВЕТ. Не злоупотреблять сложными условиями.

5.2. Условный оператор "if"

В общем случае оператор "if" имеет структуру

if условие then список [elif условие then список] [else список] fi

Здесь "elif" сокращенный вариант от "else if" может быть использован наряду с полным, т.е. допускается вложение произвольного числа операторов "if" (как и других операторов). Разумеется "список" в каждом случае должен быть осмысленный и допустимый в данном контексте.

Конструкции

[elif условие then список]

и

[else список]

не являются обязательными (в данном случае для указания на необязательность конструкций использованы квадратные скобки - не путать с квадратными скобками команды "test"!).

Самая усеченная структура этого оператора

if условие then список fi

если выполнено условие (как правило это ком получен код завершения "0", то выполняется "список", иначе он пропускается.

Обратите внимание, что структура обязательно завершается служебным словом "fi". Число "fi", естественно, всегда должно соответствовать числу "if".

Примеры.

Пусть написан расчет "if-1"

if [ $1 -gt $2 ] then pwd else echo $0 : Hello! Fi

Тогда вызов расчета

if-1 12 11

даст

/home/sae/STUDY/SHELL

а

if-1 12 13

даст

if-1 : Hello!

Возможно использовать в условии то свойство shell, что команды могут выдавать различный код завершения. Это напоминает приемы программирования на Си. Пусть расчет "if-2" будет




Начало  Назад  Вперед



Книжный магазин