список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 — это отдельная программа) переменнаях была доступна.