Условный оператор if используется для проверки выполнения выражений(команд). Проверяемое выражение располагается после оператора if , а за ней следует оператор then, за которым следует группа операторов, которые будут выполняться, если проверяемая команда отработала успешно (вернула код завершения 0) и закрывается конструкция проверки оператором fi (т.е. как бы перевёрнутым if):
if ...выражение... then команда_1_когда_выражение_отработало_без_ошибок команда_2_когда_выражение_отработало_без_ошибок ... команда_N_когда_выражение_отработало_без_ошибок fi
В следующем примере командой test проверим, задана ли переменная $VAR:
if [[ $VAR ]] then echo "Переменная $VAR задана" fi
В том случае, если нужно предусмотреть случай, когда выражение отработало с ошибкой, в конструкцию if — then — fi добавляется оператор else:
if ...выражение... then команда_1_когда_выражение_отработало_без_ошибок команда_2_когда_выражение_отработало_без_ошибок ... команда_N_когда_выражение_отработало_без_ошибок else команда_1_когда_выражение_отработало_с_ошибоками команда_2_когда_выражение_отработало_с_ошибками ... команда_N_когда_выражение_отработало_с_ошибками fi
В качестве примера создадим скрипт, который:
— принимает 2 параметра из командной строки
— командой test проверяет наличие не менее 2х параметров
— в случае, если переданы 2 параметра, вычисляет площадь прямоугольника
— а если меньше 2х параметров, выведет сообщение и выйдет с ошибкой
#!/bin/bash if [[ $1 && $2 ]] then S=$(echo "$1*$2"|bc) echo "Площадь прямоугольника со сторонами $1 и $2 равна $S см" else echo "Скрипту передано менее 2х параметров. Выходим." exit 1 fi
И ещё один пример. Продолжим предыдущий пример и добавим ещё одну проверку:
При помощи сравнения чисел, выведем сообщение, «Этот прямоугольник большой», если его площадь больше 200 см2, а во всех остальных случаях выведем сообщение «Этот прямоугольник маленький»:
#!/bin/bash if [[ $1 && $2 ]] then S=$(echo "$1*$2"|bc) echo "Площадь прямоугольника со сторонами $1 и $2 равна $S см" else echo "Скрипту передано менее 2х параметров. Выходим." exit 1 fi if [[ "$S" -gt "200" ]] then echo "Этот прямоугольник большой" else echo "Этот прямоугольник маленький" fi