список2
fi
Например:
if [ $? –ne 0 ]; then echo "Ошибка. См. файл протокола"; fi;
Вместо списка команд удобно использовать команду test или выражение [условие]. Например, следующие выражения аналогичны:
test –e /etc/passwd
[-е /etc/passwd]
И первое, и второе выражение проверяют существование файла /etc/passwd. Другие опции команды test представлены в табл. 19.38.
Опции команды test Таблица 19.38
Опция | Возвращаемое значение и описание |
---|---|
-d файл | Истина, если файл существует и является каталогом |
-е файл | Истина, если файл существует |
-f файл | Истина, если файл существует и является простым файлом |
-k файл | Истина, если файл существует и для него установлен бит односторонней операции |
-L файл | Истина, если файл существует и является ссылкой |
-r файл | Истина, если файл существует и доступен для чтения |
-s файл | Истина, если файл существует и его размер больше 0 |
-х файл | Истина, если файл существует и является исполнимым |
-w файл | Истина, если файл существует и доступен для записи |
-о файл | Истина, если файл существует и принадлежит данному пользователю |
-z строка | Истина, если длина строки равна 0 |
-n строка | Истина, если длина строки не равна 0 |
Команда test, в случае успешного завершения, возвращает значение истина, то есть 0 — успешное завершение. Если в скобках стоит непустое слово, test возвратит тоже 0, например:
[ word ]; echo $?
0
[]; echo $?
1
В первом случае возвращается истина (true), на экран выводится ноль — код удачного (безошибочного) завершения программы. Во втором случае на экран выводится единица — команда test возвратила значение ложь (false). Сравнение строк осуществляется следующим образом: выражения str1 = str2 или str1 == str2 истинны, когда строки str1 и str2 равны. Обратите внимание: между двумя символами равно не должно быть пропуска!
Символ ! инвертирует любое условие команды test, например, выражение str1 != str2 будет истинным, когда строки
str="word"; export str; ["$str" –a –f /etc/passwd]; echo $?
0
str=""; export str; ["$str" –a –f /etc/passwd]; echo $?
1
В первом случае непустая строка
Во втором случае пустая строка
Логические операции Таблица 19.39
AND | True | False | OR | True | False | XOR | True | False |
---|---|---|---|---|---|---|---|---|
True | True | False | True | True | True | True | False | True |
False | False | False | False | True | False | False | True | False |
Операция XOR — это исключающее ИЛИ. Данная операция не используется при создании сценариев с помощью интерпретатора bash.
Для сравнения целых чисел используются опции команды test,приведенные в табл. 19.40.
Сравнение целых чисел Таблица 19.40
Опция | Описание |
---|---|
-eq | Равно |
-ne | Не равно |
-It | Меньше |
-gt | Больше |
-le | Меньше или равно |
-ge | Больше или равно |
Интерпретатор bash воспринимает строки, как целые числа. Если нужно обнулить строку, то это достигается таким присваиванием: х=0.
х=124 ; export х ; [ 111 –It "$х" ] ; echo $?
0
Поскольку 111 меньше, чем 124, на экране вы увидите 0 (истина).
Примечание. Во всех примерах, вы, наверное, заметили использование команды export. Это необходимо для того, чтобы порожденному процессу (не забывайте: test — это отдельная программа) переменнаях была доступна.