Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Условные выражения



Синтаксис условного оператора:

if условие

then

command 1

command 2

...

fi

Команды command1 и command2 будут выполнены, если условие истинно. Условие может генерироваться одной или несколькими командами. По существу, ложность или истинность условия определяется кодом возврата последней выполненной команды. Например:

if grep alla /etc/passwd >dev/null 2>&1 #если слово alla в файле паролей найдено

then

echo alla present into password file #то вывести сообщение

fi

Наиболее распространенным способом генерации условия для оператора if является команда test, которая вычисляет логическое выражение и возвращает 0, если выражение истинно, и 1 в противном случае. Синтаксис команды:

test выражение или [выражение]

Выражения, используемые в команде test

Выражения с файлами
-r файл истина, если файл существует и доступен для чтения.
-w файл истина, если файл существует и доступен для записи.
-x файл истина, если файл существует и является выполняемым
-f файл истина, если файл существует и является обычным файлом
-d файл истина, если файл существует и является каталогом.
-c файл истина, если файл существует и является специальным символьным файлом.
-b файл истина, если файл существует и является специальным блочным файлом
-p файл истина, если файл существует и является именованным каналом.
-u файл истина, если файл существует и его режим содержит бит переустановки идентификатора пользователя.
-g файл истина, если файл существует и его режим содержит бит переустановки идентификатора группы.
-k файл истина, если файл существует и его режим содержит бит навязчивости
-s файл истина, если файл существует и имеет ненулевой размер
-t [дескриптор файла] истина, если открытый файл с указанным дескриптором (по умолчанию 1) существует и ассоциирован с терминалом.
Выражения со строками
-z s1 истина, если длина строки s1 нулевая.
-n s1 истина, если длина строки s1 ненулевая.
s1 = s2 истина, если строки s1 и s2 равны.
s1!= s2 истина, если строки s1 и s2 не равны.
s1 истина, если s1 - непустая строки.
Сравнение целых чисел
n1 -eq n2 истина, если целые числа n1 и n2 алгебраически равны. на месте -eq могут быть также операции сравнения -ne (не равно), -gt (больше), -ge (больше или равно), -lt (меньше), -le (меньше или равно).
Логические операторы (для объединения нескольких условий; приведены в порядке уменьшения приоритета):
! унарная операция отрицания
-a логическое И.
-o логическое ИЛИ.

Примеры:

if [ -x /etc/ineted ] #если исполняемый файл сущ. then /etc/ineted #файл запускается на выполнение echo "запущен сервер ineted" fi #если ответ пользователя "N" или "n" if ["$ANSW" = "N" –o "$ANSW" = "n"] then exit fi

Циклы

Команды в теле оператора while будут выполняться, пока условие не станет ложным:

while условие

do

command1

command2

...

done

Команды в теле оператора until будут выполняться, пока условие не станет истинным:

until условие

do

command1

command2

...

done

Как и в случае с оператором if, условие генерируется кодом возврата команды, например test.

Оператор for обеспечивает выполнение цикла столько раз, сколько слов имеется в списке. При этом переменная var последовательно принимает значения, равные словам из списка. Список может формироваться различными способами, например как вывод некоторой команды (‘имя_команды’) или помощью шаблонов shell. В другой форме for, когда список отсутствует, переменная var принимает значения позиционных параметров, переданных скрипту:

for var in спиок for read var

do do

command1 command1

command2 command2

......

done done

Примеры:





Дата публикования: 2015-04-10; Прочитано: 198 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...