Операторы case в Bash обычно используются для упрощения сложных условий, когда у вас есть несколько вариантов. Использование оператора case вместо вложенного оператора if поможет вам сделать ваши bash-сценарии более удобочитаемыми и более простыми в обслуживании.
Оператор case в Bash имеет схожую концепцию с оператором переключения Javascript или C. Основное отличие состоит в том, что, в отличие от оператора C switch, оператор case не продолжает поиск соответствия шаблону после того, как он нашел один и выполнил операторы, связанные с этим шаблоном.
В этой статье мы рассмотрим основы инструкций случая Bash и покажем, как их использовать в сценариях оболочки.
Синтаксис описания case
Оператор case имеет следующую форму:
case EXPRESSION in PATTERN_1) STATEMENTS ;; PATTERN_2) STATEMENTS ;; PATTERN_N) STATEMENTS ;; *) STATEMENTS ;; esac
- Каждый оператор case начинается с ключевого слова case, за которым следует выражение case и ключевое слово in. Утверждение заканчивается ключевым словом esac.
- Вы можете использовать несколько шаблонов, разделенных оператором |. Оператор ) завершает список шаблонов.
- Шаблон может иметь специальные символы.
- Шаблон и связанные с ним команды называются предложениями.
- Каждый пункт должен заканчиваться на ;;.
- Команды, соответствующие первому шаблону, который соответствует выражению, выполняются.
- Обычной практикой является использование подстановочного знака звездочки ( *) в качестве окончательного шаблона для определения регистра по умолчанию. Этот шаблон всегда будет совпадать.
- Если не найдено ни одного шаблона, возвращаемый статус равен нулю. В противном случае возвращаемый статус – это статус завершения выполненных команд.
Пример заявления case
Вот пример использования оператора case в bash-скрипте, который будет печатать официальный язык данной страны:
#!/bin/bash echo -n "Введите название страны: " read COUNTRY echo -n "Официальный язык $COUNTRY это " case $COUNTRY in Russia) echo -n "Russia" ;; Brazil) echo -n "Brazil" ;; Italy | "San Marino" | Switzerland | "Vatican City") echo -n "Italian" ;; *) echo -n "неизвестный" ;; esac
Сохраните пользовательский скрипт в виде файла и запустите его из командной строки.
bash languages.sh
Скрипт попросит вас ввести страну. Например, если вы введете «Russia», она будет соответствовать первому шаблону, и команда echo в этом предложении будет выполнена.
Скрипт выведет следующий вывод:
Введите название страны: Russia Официальный язык Russia это Russian
Если вы вводите страну, которая не соответствует ни одному другому шаблону, кроме подстановочного символа по умолчанию, скажем, Ukraine, скрипт выполнит команду echo внутри предложения по умолчанию.
Введите название страны: Ukraine Официальный язык Ukraine is неизвестный
Заключение
К настоящему времени вы должны хорошо понимать, как писать оператор case. Он часто используются для передачи параметров в сценарий оболочки из командной строки. Например, сценарии инициализации используют операторы case для запуска, остановки или перезапуска служб.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.