Например, для проверки существования файла можно написать
test -e <файл>
или
[ -е <файл> ]
Если вместо слова test используются квадратные скобки, они обязательно должны быть отделены от аргументов пробелом, потому что на самом деле «[» — это название команды, а «]» — обязательный последний аргумент этой команды.
В случае истинности условия команда test возвращает код успешного завершения, то есть 0; в случае ложности — код ошибки 1 (не спутайте с обычными языками программирования, где 1 — другое имя для true!).
Команда test может проверять и строку на пустоту: непустая строка считается выполнением условия и приводит к коду завершения 0. Пример:
$ test $USER; echo $?
0
$ test $VAR_not_set_yet; echo $?
1
Условные выражения можно комбинировать с помощью обычных логических операций:
♦ !(выражение) — отрицание;
♦ выражение1 -а выражение2 — логическое И (
♦ выражение1 -о выражение2 — логическое ИЛИ (
Элементарные условные выражения перечислены в таблицах 8.2 и 8.3. Полный список их можно получить по команде help test.
Основные условные выражения для файлов Таблица 8.2
| Выражение | Истинно, если |
|---|---|
| -d файл | файл существует и является каталогом |
| -е файл | файл существует |
| -f файл | файл существует и является обычным файлом |
| -L файл | файл существует и является символической ссылкой |
| -r файл | файл существует и доступен для чтения |
| -w файл | файл существует и доступен для записи |
| -x файл | файл существует и является исполняемым |
| -s файл | файл существует и его размер больше 0 |
| -N файл | файл существует и изменился со времени последнего чтения |
| файл1 -nt файл2 | время модификации файла1 позже (newer than), чем файла2 |
| файл1 -ot файл2 | время модификации файла1 раньше (older than), чем файла2 |
| файл1 -ef файл2 | файл1 — это жесткая ссылка на файл2 |
Элементарные условные выражение для сравнения строк Таблица 8.3
| Выражение | Истинно, если |
|---|---|
| -z строка | длина строки равна 0 |
| -n строка | длина строки не равна 0 |
| стр1 == стр2 | строки совпадают |
