Bash оператор Case
Bash оператор Case
Bash Case Statement
В этом руководстве мы рассмотрим основы case оператора Bash и покажем, как его использовать в сценариях оболочки.

Инструкция bash case
обычно используется для упрощения сложных условий, когда у вас есть несколько различных вариантов выбора. Использование case
оператора вместо вложенных if
операторов поможет вам сделать ваши bash-сценарии более удобочитаемыми и более простыми в обслуживании.
Оператор Bash case
имеет аналогичную концепцию с switch
оператором Javascript или C. Основное отличие состоит в том, что, в отличие от switch
оператора C, оператор Bash case
не продолжает поиск соответствия шаблону после того, как он нашел один и выполнил операторы, связанные с этим шаблоном.
Синтаксис оператора case
Оператор Bash case
принимает следующую форму:
case EXPRESSION in
PATTERN_1)
STATEMENTS
;;
PATTERN_2)
STATEMENTS
;;
PATTERN_N)
STATEMENTS
;;
*)
STATEMENTS
;;
esac
- Каждый
case
оператор начинается сcase
ключевого слова, за которым следует выражение регистра иin
ключевое слово. Утверждение заканчиваетсяesac
ключевым словом. - Вы можете использовать несколько шаблонов, разделенных
|
оператором.)
Оператор завершает список шаблонов. - Шаблон может иметь специальные символы .
- Шаблон и связанные с ним команды известны как предложение.
- Каждый пункт должен заканчиваться на
;;
. - Команды, соответствующие первому шаблону, который соответствует выражению, выполняются.
- Обычной практикой является использование подстановочного знака звездочки (
*
) в качестве окончательного шаблона для определения регистра по умолчанию. Этот шаблон всегда будет совпадать. - Если не найдено ни одного шаблона, возвращаемый статус равен нулю. В противном случае возвращаемое состояние является состоянием выхода выполненных команд.
Пример описания случая
Вот пример использования case
оператора в скрипте bash, который будет печатать официальный язык данной страны:
#!/bin/bash
echo -n "Enter the name of a country: "
read COUNTRY
echo -n "The official language of $COUNTRY is "
case $COUNTRY in
Lithuania)
echo -n "Lithuanian"
;;
Romania | Moldova)
echo -n "Romanian"
;;
Italy | "San Marino" | Switzerland | "Vatican City")
echo -n "Italian"
;;
*)
echo -n "unknown"
;;
esac
Сохраните пользовательский скрипт в виде файла и запустите его из командной строки.
bash languages.sh
Скрипт попросит вас ввести страну. Например, если вы введете «Литва», он будет соответствовать первому шаблону, и echo
команда в этом предложении будет выполнена.
Скрипт выведет следующий вывод:
Enter the name of a country: Lithuania
The official language of Lithuania is Lithuanian
Если вы введете страну, которая не соответствует ни одному другому шаблону, кроме подстановочного символа по умолчанию, скажем, Аргентина, скрипт выполнит echo
команду внутри предложения по умолчанию.
Enter the name of a country: Argentina
The official language of Argentina is unknown
Вывод
К настоящему времени вы должны хорошо понимать, как писать case
операторы bash . Они часто используются для передачи параметров в сценарий оболочки из командной строки. Например, сценарии инициализации используют case
операторы для запуска, остановки или перезапуска служб.