Основы программирования в Linux - Мэтью Нейл
Мы представим команду test на примере одного простейшего условия: проверки наличия файла. Для нее понадобится следующая команда: test -f <<i>имя_файла</i>>, поэтому в сценарии можно написать
if test -f fred.c
then
...
fi
To же самое можно записать следующим образом:
if [ -f fred.c ]
then
...
fi
Код завершения команды test (выполнено ли условие) определяет, будет ли выполняться условный программный код.
ПримечаниеИмейте в виду, что вы должны вставлять пробелы между квадратной скобкой [ и проверяемым условием. Это легко усвоить, если запомнить, что вставить символ [ — это все равно, что написать test, а после имени команды вы всегда должны вставлять пробел.
Если вы предпочитаете помещать слово then в той же строке, что и if, нужно добавить точку с запятой для отделения команды test от then:
if [ -f fred.c ]; then
...
fi
Варианты условий, которые вы можете применять в команде test, делятся на три типа: строковые сравнения, числовые сравнения и проверка файловых флагов (file conditionals). Эти типы условий описаны в табл. 2.4.
Таблица 2.4
Варианты условий Результат Сравнения строк <i>Строка1 = Строка2</i> True (истина), если строки одинаковы <i>Строка1 != Строка2</i> True (истина), если строки разные -n<i> Строка</i> True (истина), если Строка не null -z <i>Строка</i> True (истина), если <i>Строка</i> null (пустая строка) Сравнения чисел <i>Выражение1</i> -eq <i>Выражение2</i> True (истина), если выражения равны <i>Выражение1</i> -ne<i> Выражение2</i> True (истина), если выражения не равны <i>Выражение1</i> -gt Вы<i>ражение2</i> True (истина), если Выражение1 больше, чем Выражение2 <i>Выражение1</i> -ge <i>Выражение2</i> True (истина), если Выражение1 не меньше Выражение2 <i>Выражение1</i> -lt <i>Выражение2</i> True (истина), если Выражение1 меньше, чем Выражение2 <i>Выражение1</i> -lе<i> Выражение2</i> True (истина), если Выражение1 не больше Выражение2 ! <i>Выражение</i> True (истина), если Выражение ложно, и наоборот Файловый флаг -d <i>файл</i> True (истина), если файл — каталог -е<i> файл</i> True (истина), если файл существует. Исторически, опция -e не была переносима на другие платформы, поэтому обычно применяется -f -f <i>файл</i> True (истина), если файл — обычный файл -g <i>файл</i> True (истина), если для файла установлен бит set-group-id -r<i> файл</i> True (истина), если <i>файл</i> доступен для чтения -s <i>файл</i> True (истина), если <i>файл</i> ненулевого размера -u<i> файл</i> True (истина), если для файла установлен бит set-user-id -v <i>файл</i> True (истина), если файл доступен для записи -х<i> файл</i> True (истина), если <i>файл </i>— исполняемый файл