Введение
Оператор bash case
обычно используется для упрощения сложных условий, когда существует несколько разных вариантов. Использование оператора case
вместо вложенных операторов if
поможет сделать ваши сценарии bash более читабельными и простыми в обслуживании.
Оператор Bash имеет аналогичную концепцию с оператором case
в Javascript или switch
в C. Основное отличие состоит в том, что, в отличие от оператора switch
в C, оператор case
в Bash не продолжает поиск соответствующего шаблона, как только он есть. выполнил инструкции, связанные с этим шаблоном.
В этом руководстве будут рассмотрены основы оператора case
Bash и показано, как его использовать в сценариях оболочки.
Синтаксис оператора Case
Синтаксис оператора case Bash состоит из ключевого слова case
" ", за которым следует соответствующее значение, in
" " и одного или нескольких шаблонов с соответствующими блоками кода, заключенными в ;;
инструкции " ":
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
для запуска, остановки или перезапуска служб.