Оператор case и сопоставление с шаблонами
Удобно выбирайте действия для множества значений. Изучите оператор case, шаблоны glob, сопоставление с несколькими шаблонами и преимущества по сравнению с длинными цепочками if-elif.
«Оператор case и сопоставление с шаблонами» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Зачем нужен case
Когда переменная может принимать много значений, длинная цепочка if/elif/elif становится неудобной. Оператор case сопоставляет значение с шаблонами и гораздо лучше читается.
Базовый синтаксис
Блок case проверяет значение по шаблонам; каждый шаблон заканчивается на ), а его тело — на ;;. Весь блок завершается словом esac.
case "$fruit" in
apple) echo "red";;
banana) echo "yellow";;
esacВетка по умолчанию
Шаблон *) соответствует чему угодно и служит универсальной веткой по умолчанию, как else.
case "$cmd" in
start) echo "starting";;
stop) echo "stopping";;
*) echo "unknown command";;
esacСопоставление нескольких шаблонов
Используйте |, чтобы сопоставить несколько шаблонов в одной ветке.
case "$ans" in
y|Y|yes) echo "Confirmed";;
n|N|no) echo "Cancelled";;
esacШаблоны glob
В шаблонах используется механизм glob оболочки, а не регулярные выражения: * соответствует любой строке, ? — одному символу, а [...] — классу символов.
case "$file" in
*.txt) echo "text file";;
*.jpg|*.png) echo "image";;
esacДиапазоны символов
Шаблоны в квадратных скобках соответствуют диапазонам; это удобно для группировки по первой букве или цифре.
case "$ch" in
[a-z]) echo "lowercase";;
[0-9]) echo "digit";;
esacПростое меню
case особенно удобен в сценариях с меню, где пользователь выбирает вариант.
read -p "Choice: " opt
case "$opt" in
1) backup;;
2) restore;;
*) echo "Invalid";;
esaccase и if
Используйте if для сложных логических условий (диапазонов, сравнений, нескольких переменных). Используйте case, когда ветвление зависит от значения или шаблона одной переменной.
Кавычки вокруг значения
Заключайте проверяемое значение ("$var") в кавычки, чтобы безопасно обрабатывать пустые значения и значения с пробелами.
case "$input" in
"") echo "empty";;
*) echo "got: $input";;
esacПереход к следующим веткам с помощью ;;&
Bash поддерживает ;;&, чтобы после совпадения продолжить проверку следующих шаблонов и позволить сработать нескольким веткам.
case "$f" in
*.tar) echo "tar";;&
*.gz) echo "gzip";;
esacОбработка аргументов
Распространённый практический пример: ветвление по первому аргументу сценария для реализации подкоманд, как в инструменте CLI.
case "$1" in
init) do_init;;
build) do_build;;
*) echo "usage: $0 {init|build}";;
esacБыстрая проверка
Проверьте своё понимание.
Итоги
Вы изучили оператор case: сопоставление значения с шаблонами glob, завершение веток с помощью ;;, объединение шаблонов с помощью |, использование *) по умолчанию и предпочтительность case перед длинными цепочками if-elif для понятного ветвления по значениям и обработки аргументов.
Часто задаваемые вопросы
Урок «Оператор case и сопоставление с шаблонами» бесплатный?
Да — полный текст урока «Оператор case и сопоставление с шаблонами» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Оператор case и сопоставление с шаблонами»?
Удобно выбирайте действия для множества значений. Изучите оператор case, шаблоны glob, сопоставление с несколькими шаблонами и преимущества по сравнению с длинными цепочками if-elif. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Оператор case и сопоставление с шаблонами»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Циклические конструкции (for, while)
- Функции в скриптах Bash
- Аргументы и параметры скрипта ($@, $#, getopts)
- Оператор case и сопоставление с шаблонами