Оператор case
bash обычно используется для упрощения сложных условных выражений, когда у вас есть несколько разных вариантов. Использование оператора case
вместо вложенных операторов if
поможет вам сделать ваши сценарии bash более читабельными и простыми в обслуживании.
Оператор case
Bash имеет аналогичную концепцию с оператором switch
Javascript или C. Основное отличие состоит в том, что в отличие от оператора C switch
оператор case
в Bash не продолжает поиск совпадения с шаблоном после того, как он нашел один и выполнил операторы, связанные с этим шаблоном.
В этом руководстве мы рассмотрим основы оператора case
в Bash и покажем вам, как использовать его в сценариях оболочки.
синтаксис оператора case
Оператор case
Bash имеет следующую форму:
case EXPRESSION in
PATTERN_1)
STATEMENTS
;;
PATTERN_2)
STATEMENTS
;;
PATTERN_N)
STATEMENTS
;;
*)
STATEMENTS
;;
esac
- Каждый оператор
case
начинается с ключевого словаcase
, за которым следует выражение case и ключевое словоin
. Заявление заканчиваетсяesac
словомesac
. - Вы можете использовать несколько шаблонов, разделенных
|
оператор. Оператор)
завершает список шаблонов. - В шаблоне могут быть специальные символы .
- Шаблон и связанные с ним команды известны как предложение.
- Каждое предложение должно заканчиваться символом
;;
. - Выполняются команды, соответствующие первому шаблону, соответствующему выражению.
- Обычной практикой является использование подстановочного знака звездочки (
*
) в качестве последнего шаблона для определения регистра по умолчанию. Этот шаблон всегда будет совпадать. - Если шаблон не найден, статус возврата равен нулю. В противном случае статус возврата — это статус завершения выполненных команд.
Пример заявления case
Вот пример использования оператора 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
для запуска, остановки или перезапуска служб.
Добавить комментарий