Thank you for reading this post, don't forget to subscribe!
Операторы case в Bash обычно используются для упрощения сложных условий, когда у вас есть несколько вариантов. Использование оператора case вместо вложенного оператора if поможет вам сделать ваши bash-сценарии более удобочитаемыми и более простыми в обслуживании.
Оператор case в Bash имеет схожую концепцию с оператором переключения Javascript или C. Основное отличие состоит в том, что, в отличие от оператора C switch, оператор case не продолжает поиск соответствия шаблону после того, как он нашел один и выполнил операторы, связанные с этим шаблоном.
В этой статье мы рассмотрим основы инструкций случая Bash и покажем, как их использовать в сценариях оболочки.
Синтаксис описания case
Оператор case имеет следующую форму:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
case EXPRESSION in PATTERN_1) STATEMENTS ;; PATTERN_2) STATEMENTS ;; PATTERN_N) STATEMENTS ;; *) STATEMENTS ;; esac |
- Каждый оператор case начинается с ключевого слова case, за которым следует выражение case и ключевое слово in. Утверждение заканчивается ключевым словом esac.
- Вы можете использовать несколько шаблонов, разделенных оператором |. Оператор ) завершает список шаблонов.
- Шаблон может иметь специальные символы.
- Шаблон и связанные с ним команды называются предложениями.
- Каждый пункт должен заканчиваться на ;;.
- Команды, соответствующие первому шаблону, который соответствует выражению, выполняются.
- Обычной практикой является использование подстановочного знака звездочки ( *) в качестве окончательного шаблона для определения регистра по умолчанию. Этот шаблон всегда будет совпадать.
- Если не найдено ни одного шаблона, возвращаемый статус равен нулю. В противном случае возвращаемый статус – это статус завершения выполненных команд.
Пример заявления case
Вот пример использования оператора case в bash-скрипте, который будет печатать официальный язык данной страны:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#!/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 |
Сохраните пользовательский скрипт в виде файла и запустите его из командной строки.
1 |
bash languages.sh |
Скрипт попросит вас ввести страну. Например, если вы введете «Russia», она будет соответствовать первому шаблону, и команда echo в этом предложении будет выполнена.
Скрипт выведет следующий вывод:
1 2 |
Введите название страны: Russia Официальный язык Russia это Russian |
Если вы вводите страну, которая не соответствует ни одному другому шаблону, кроме подстановочного символа по умолчанию, скажем, Ukraine, скрипт выполнит команду echo внутри предложения по умолчанию.
1 2 |
Введите название страны: Ukraine Официальный язык Ukraine is неизвестный |
Заключение
К настоящему времени вы должны хорошо понимать, как писать оператор case. Он часто используются для передачи параметров в сценарий оболочки из командной строки. Например, сценарии инициализации используют операторы case для запуска, остановки или перезапуска служб.