If
Команда if имеет вид:
if list; then list; [elif list; then list;] ...[ else list;] fi
Сначала выполняется список команд, который стоит после if. Если он завершился успешно, то выполняется список команд после первого then. Значение и логика выполнения других частей этой команды очевидна. Команда начинается символами "if" и должна закончиться символами "fi". Часть команды в квадратных скобках — это необязательные конструкции, которые при необходимости можно опустить.
Рассмотрим в качестве примера проверку метода доступа к скрипту. Для bash это может быть только GET:
#!/usr/freeware/bin/bash echo Content-type: text/plain echo if test $REQUEST_METHOD = "POST"; then echo POST; elif test $REQUEST_METHOD = "GET"; then echo GET; else echo Unknown method $REQUEST_METHOD; fi
В данном случае мы используем сравнение строк (символ "="). Если нужно сравнивать арифметические выражения, то следует использовать другие операции сравнения:
-eq — равенство операндов; -ne — неравенство операндов; -lt — первый операнд меньше второго; -le — первый операнд меньше либо равен второму; -gt — первый операнд больше второго; -ge — первый операнд больше либо равен второму.
Команда test чрезвычайно полезна при работе с файловой системой. Например, при проверке наличия файла и прав на чтение можно использовать следующую комбинацию:
if test -r file.txt; then echo file.txt is readable; fi
Помимо проверки наличия файла и прав можно определять тип файла (-d — каталог, -f — обычный файл и т.п.).