Команда test
Команда test позволяет проверить заданные условия. Виды проверок, вы- полняемых командой test:
r проверка файлов на предмет выполнения заданных условий;
r сравнение файлов;
r проверка установки опций оболочки;
r сравнение строк;
r сравнение целых чисел.
Если тест выполнен успешно, команда test передает нулевой код возврата. Так, используя команду test -e, можно проверить существование файла (пример 10.20).
Пример 10.20. Проверка существования файла |
$ test -e /etc/passwd
$ echo $? 0
$ test -e not_existent_file
$ echo $? 1
В первом случае команда test вернула нулевой код возврата, посколь- ку файл /etc/passwd существует. Во втором случае команда вернула код ошибки.
Команда test в сценариях обычно вызывается в другой форме, совершенно эквивалентной показанной ранее. В этой форме вместо строки test указыва- ют квадратные скобки и условие в них: [ условие ]. Задача из предыдущего примера может быть решена иным способом (пример 10.21).
Пример 10.21. Другая форма команды test |
$ [ -e /etc/passwd ]
$ echo $? 0
Команда [ -e /etc/passwd ] эквивалентна команде test -e /etc/passwd.
Наиболее часто используемые опции команды test, связанные с проверкой файлов:
r -e — файл существует;
r -f — файл является обычным файлом (plain file);
r -d — файл является каталогом;
r -h или -L — файл является символической ссылкой;
r -r — файл доступен для чтения;
r -w — файл доступен для записи;
r -x — файл доступен для исполнения;
r -s — файл не пуст;
r -N — файл был модифицирован.
Формат вызова test, который используется при сравнении файлов:
r [ file1 -nt file2 ] — возвращает истину, если первый файл имеет бо- лее позднюю дату модификации;
r [ file1 -ot file2 ] — возвращает истину, если первый файл имеет бо- лее раннюю дату модификации;
r [ file1 -ef file2 ] — проверка жесткой связи (hard link).
Опция -o позволяет проверять установку опций оболочки (пример 10.22).
Пример 10.22. Проверка установленных опций оболочки |
$ set -o noclobber
$ [ -o noclobber ]
$ echo $? 0
$ set +o noclobber
$ [ -o noclobber ]
$ echo $? 1
Для сравнения строк применяется следующий формат вызова команды test:
r [ str1 = str2 ] — проверка на совпадение строк;
r [ str1 != str2 ] — проверка на несовпадение строк;
r [ str1 < str2 ] — истина, если при сортировке строка str1 окажется раньше, чем str2 (по аналогии сравнение >);
r [ -z str ] — истина, если длина строки нулевая;
r [ -n str ] — истина, если длина строки ненулевая.
Сравнение целых чисел (пример 10.23) производится с помощью следующих опций команды test:
r -eq — равенство;
r -ne — неравенство;
r -lt — меньше;
r -le — меньше или равно;
r -gt — больше;
r -ge — больше или равно.
Пример 10.23. Сравнение чисел |
$ [ 1 -lt 2 ]
$ echo $? 0
$ [ 1 -eq 2 ]
$ echo $? 1
Дата добавления: 2015-06-12; просмотров: 685;