Условные операторы
В оболочке bash действуют два вида условных операторов:
• Оператор ветвления - if
• Оператор выбора - case
Эти операторы используются для организации ветвлений в скриптах shell, когда в зависимости от заданных условий и значений переменных выбирается то или иное действие.
Условный оператор if
if [выражение ]
then
список команд
elif [выражение2]
then
список команд
else
список команд
fi
Ветви elif и else являются необязательными в операторе if. Ветка elif выполняется в том случае, если все выражения, заданные в ветке if и во всех ветках elif, находящихся выше, являются ложными. В случае, если ни одно из выражений веток if и elif не является истинным, выполняются команды ветки else.
Пример 1.
if [ $1 -lt 10 ]
then
echo "Введите число, большее 10"
else
echo "Вы ввели значение $1"
fi
Пример 2.
if [-f $1]
then
echo "объект $1 является файлом"
elif
[-d $1]
then
echo "объект $1 является каталогом"
else
echo "$1 не является ни файлом, ни каталогом"
fi
Оператор выбора case
Используется для сравнения шаблона с некоторыми другими шаблонами, в случае совпадения с одним из них исполняется определенный блок кода. При анализе строк в качестве шаблонов сравнения могут использоваться метасимволы:
case string1
in
str1)
команды;;
str2)
команды;;
esac
Выполняется данный оператор следующим образом: Строка stringl сравнивается с заданными шаблонами stii и str2. В случае совпадения с одним из этих значений, выполняется соответствующий ему блок кода. Если ни одно из заданных значений str1 и str2 не является аналогом строки stringl, выполняются команды, указанные после звездочки (*), так как данный символ обозначает "любую строку".
Пример:
echo "Меню: "
echo "1. Завтрак"
echo "2. Обед"
echo "3. Ужин"
echo "Сделайте свой выбор"
read choice
case choice in
1) echo "На завтрак - кукурузные хлопья с молоком";;
2) echo "На обед - жареный рис с овощами";;
3) echo "На ужин - шпинат, запеченый с сыром";;
*) echo "Пожалуйста, введите значение от 1 до 3"
esac