Условный оператор case — специальная управляющая конструкция, которая позволяет сопоставить заданное значение с несколькими шаблонами. Она часто используется в качестве альтернативы операторам if, elif и else, когда необходимо выполнить различные действия в зависимости от значения переменной или выражения.
В этой статье мы покажем примеры использования оператора case в скриптах Bash в ОС Linux.
Содержание:
- Синтаксис оператора case
- Использование case для выполнения конкретной задачи
- Использование case с логическим оператором «ИЛИ»
- Применение регулярных выражений в конструкции case
- Выводы
Синтаксис оператора case
Базовый синтаксис оператора case в Bash выглядит следующим образом:
Где:
case— специальное слово, которое указывает начало оператораcase;expression— выражение, которое нужно сопоставить с различными шаблонами;in— специальное слово, которое указывает начало списка шаблонов;pattern1),pattern2)иpatternN)— шаблоны, с которыми сравнивается выражение;command1,command2иcommandN— команды, которые выполняются, если шаблон соответствует выражению;;;— специальные символы, обозначающие конец каждого блока кода;*)— шаблон, код которого будет выполнен, если ни один из других шаблонов не соответствует выражению;esac— специальное слово, которое указывает конец оператораcase.
Использование case для выполнения конкретной задачи
Допустим, нам нужно написать скрипт Bash, который позволяет пользователю решить одну из следующих задач:
- отобразить текущие дату и время;
- вывести на экран список файлов и директорий в текущем каталоге;
- узнать абсолютный путь к текущей директории.
Читайте также: Использование операторов if, elif, else в скриптах Bash.
Для этого напишем следующий код:
Посмотрим, как работает наш код, запустив соответствующий скрипт:
Использование case с логическим оператором «ИЛИ»
В специальной управляющей конструкции case можно использовать логический оператор «ИЛИ» (|) для объединения нескольких условий в одном блоке. Это позволяет обрабатывать несколько вариантов сопоставления в одной секции, улучшая читаемость кода. Для примера напишем скрипт, который определяет количество дней в указанном пользователем месяце:
В этом коде с помощью логического оператора | мы разделили названия месяцев на две группы: месяцы с 30 днями и месяцы с 31 днем. Команда shopt -s nocasematch позволяет пользователям вводить названия месяцев без соблюдения регистра букв.
Запустим наш скрипт:
Читайте также: Как объединять строки в скриптах Bash.
Применение регулярных выражений в конструкции case
Регулярные выражения внутри case помогают более гибко описывать и сопоставлять разнообразные строки. Этот подход позволяет лаконично обрабатывать ввод с использованием сложных шаблонов, что может быть полезно, например, при валидации ввода пользователей.
Для примера напишем код, который предлагает пользователю ввести строку, а затем использует оператор case с регулярными выражениями для классификации на группы строк, которые состоят из:
- одной цифры;
- двух цифр;
- одной буквы;
- двух букв;
- более двух символов.
Важно: для случая «более двух символов» длина вводимых данных будет проверяться с помощью условного оператора if.
Читайте также: Как использовать цикл until в Linux.
Теперь проверим, как работает наш код:
Выводы
Мы показали Вам базовые примеры использования оператора case в сценариях Bash. Детально изучив показанные скрипты, Вы сможете написать код, при выполнении которого пользователь получает возможность выбора из вариантов.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.





























