0Pricing
DevOps Bootcamp · Урок

Оператор 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";;
esac

case и 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 — локальная установка не требуется.

Все уроки этого курса

  1. Циклические конструкции (for, while)
  2. Функции в скриптах Bash
  3. Аргументы и параметры скрипта ($@, $#, getopts)
  4. Оператор case и сопоставление с шаблонами
← Назад к DevOps Bootcamp