Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Синтаксис условного оператора:
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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!