НАЗВАНИЕ
test - проверка условия
СИНТАКСИС
test выражение [ выражение ]
ОПИСАНИЕ
Команда test применяется для проверки условия. Она вычисляет выражение и, если его значение - истина, возвращает код завершения 0; иначе - ненулевое значение.
Ненулевой код возвращается и в случае, когда выражение
отсутствует. При проверке прав доступа используется
действующий идентификатор пользователя.
Знаки операций, флаги и скобки (см. выше второй способ записи команды 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 (меньше или равно). |
( выражение ) | Истина, если истинно заключенное в скобки выражение (скобки должны быть экранированы от интерпретации shell'ом). |
Примитивы могут комбинироваться с помощью следующих операций (в порядке уменьшения приоритета):
! | Унарная операция отрицания. |
---|---|
-a | Логическое И. |
-o | Логическое ИЛИ. |
ПРЕДОСТЕРЕЖЕНИЯ
Операции = и != имеют больший приоритет, чем операции
от -r до -n; кроме того, операциям сравнения нужны аргументы. Следовательно, они не могут быть использованы
с операциями от -r до -n.
Если у операций от -r до -n указано более одного аргумента, то обрабатывается только первый из них (остальные игнорируются), если только второй аргумент не есть -a или -o.
СЮРПРИЗЫ
Если посредством операций -r, -w или -x Вы проверяете
файл, владельцем которого являетесь, но в режиме этого
файла не установлен соответствующий бит для пользователя, код завершения будет ненулевым (ложь), даже если у
Вас есть права на файл как у члена группы или прочего
пользователя. Для суперпользователя код завершения будет правильным.