Команда test
Не является частью Shell, но применяется внутри Shell-процедур.
Имеется три типа проверок:
- оценка числовых значений;
- оценка типа файла;
- оценка строк.
Для каждого типа свои примитивы (операции op).
Для чисел синтаксис такой:
N op M,
где N, M - числа или числовые переменные;
op принимает значения: -eq, -ne, gt, -lt, -ge, -le (с обычным смыслом, как, например, в ФОРТРАН).
Для файла синтаксис такой:
op filename,
где op принимает значения:
-s (файл существует и не пуст);
-f (файл, а не каталог);
-d (файл-директория (каталог);
-w (файл для записи);
-r (файл для чтения).
Для строк синтаксис такой:
S op R , где S, R - строки или строковые переменные или
op1 S
op принимает значения:
= (эквивалентность);
!= (не эквивалентность);
op1 принимает значения:
-z (строка нулевой длины);
-n (не нулевая длина строки).
Наконец, несколько проверок разных типов могут быть объединены логическими операциями
-a (AND) и -o (OR).
Примеры:
$ if test -w $2 -a -r S1 > then cat $1 >> $2 > else echo "cannot append" > fi $
В некоторых вариантах ОС UNIX вместо команды test используются квадратные скобки, т.е. if [...] вместо if test ... .