Задавая выражения, вы можете выполнять различные фрагменты кода, в зависимости от результатов теста. Оболочка bash использует синтаксис i f.. fi (обратный i f) с необязательным оператором el i f (иначе если) и el se:
if выражение1 ; then
(команды) el if выражение2 ; then (команды)
el if выражением ; then
(команды) else (команды) fi
Выражение : then в конце строки также может быть представлено обычным ключевым словом then в следующей строке:
if выражение then (команды)
fi
Если вы находитесь в той же директории, в которой ранее создавали сценарий hello, попробуйте набрать следующее:
admin@serverl:$ if [[ х hello ]]
> then
> echo "hello is executable"
> fi
hello is executable admin@serverl:J
Рассмотрим более причудливый сценарий, выполняющий поиск файла /etc/ passwd для имени учетной записи:

#!/bin/bash USERID="$r

DETECTED=$( egrep о "A$USERID:" < /etc/passwd ) if [[ n "{{DETECTED}" ]] : then
echo "SUSERID is one of us :)" else
echo "SUSERID is a stranger :("
fi
Назовем этот сценарий friendorfoe, сделаем его исполняемым и проверим на первой известной учетной записи нашей системы (root), а затем на вымышленной учетной записи (sasquatch):
admin@serverl:$ ./friendorfoe root root is one of us :) admin@serverl:~$ ./friendorfoe sasquatch sasquatch is a stranger :(
Первый аргумент назначен для переменной оболочки USERID. Команда egrep выполняется внутри оператора $ ( ) для назначения ее вывода переменной оболочки DETECTED. Выражение egrep о печатает только подходящую этой переменной последовательность символов, а не целую строку. Значение "~$USERID:" совпадает с содержимым переменной USERID только в том случае, если содержимое переменной появляется в самом начале строки и непосредственно за ней следует двоеточие. Условие оператора i f заключено в двойные квадратные скобки для его выражения в числах и возвращения результата. Выражение n "${DETECTED}" возвращает значение true, если переменная оболочки DETECTED не является пустой строкой. Наконец, переменная DETECTED заключена в кавычки ("${DETECTED}"), чтобы восприниматься в виде единой последовательности символов.
Всякий раз, когда оператор i f использует выражение, вы можете вставить команду или даже последовательность команд. Если последняя команда в последовательности заканчивается успешно, оператор i f считает, что выражение является истинным. Если последняя команда в последовательности не выполняется, считается, что выражение является ложным, и выполняется выражение оператора else. В следующих разделах мы увидим примеры этого.