Использование оператора case в скриптах Bash

Использование оператора case в скриптах Bash

Рубрики:

Bash, Linux

Метки:

Bash, linux

Условный оператор case — специальная управляющая конструкция, которая позволяет сопоставить заданное значение с несколькими шаблонами. Она часто используется в качестве альтернативы операторам if, elif и else, когда необходимо выполнить различные действия в зависимости от значения переменной или выражения.

В этой статье мы покажем примеры использования оператора case в скриптах Bash в ОС Linux.

Содержание:

  1. Синтаксис оператора case
  2. Использование case для выполнения конкретной задачи
  3. Использование case с логическим оператором «ИЛИ»
  4. Применение регулярных выражений в конструкции case
  5. Выводы

Синтаксис оператора case

Базовый синтаксис оператора case в Bash выглядит следующим образом:

 

Где:

  • case —  специальное слово, которое указывает начало оператора case;
  • expression — выражение, которое нужно сопоставить с различными шаблонами;
  • in — специальное слово, которое указывает начало списка шаблонов;
  • pattern1), pattern2) и patternN) — шаблоны, с которыми сравнивается выражение;
  • command1, command2 и commandN — команды, которые выполняются, если шаблон соответствует выражению;
  • ;; — специальные символы, обозначающие конец каждого блока кода;
  • *) — шаблон, код которого будет выполнен, если ни один из других шаблонов не соответствует выражению;
  • esac —  специальное слово, которое указывает конец оператора case.

Использование case для выполнения конкретной задачи

Допустим, нам нужно написать скрипт Bash, который позволяет пользователю решить одну из следующих задач:

  • отобразить текущие дату и время;
  • вывести на экран список файлов и директорий в текущем каталоге;
  • узнать абсолютный путь к текущей директории.

Читайте также: Использование операторов if, elif, else в скриптах Bash.

Для этого напишем следующий код:

 

case 1

Посмотрим, как работает наш код, запустив соответствующий скрипт:

 

case 1 execution

Использование case с логическим оператором «ИЛИ»

В специальной управляющей конструкции case можно использовать логический оператор «ИЛИ» (|) для объединения нескольких условий в одном блоке. Это позволяет обрабатывать несколько вариантов сопоставления в одной секции, улучшая читаемость кода. Для примера напишем скрипт, который определяет количество дней в указанном пользователем месяце:

 

case 2

В этом коде с помощью логического оператора | мы разделили названия месяцев на две группы: месяцы с 30 днями и месяцы с 31 днем. Команда shopt -s nocasematch позволяет пользователям вводить названия месяцев без соблюдения регистра букв.

Запустим наш скрипт:

 

case 2 execution

Читайте также: Как объединять строки в скриптах Bash.

Применение регулярных выражений в конструкции case

Регулярные выражения внутри case помогают более гибко описывать и сопоставлять разнообразные строки. Этот подход позволяет лаконично обрабатывать ввод с использованием сложных шаблонов, что может быть полезно, например, при валидации ввода пользователей.

Для примера напишем код, который предлагает пользователю ввести строку, а затем использует оператор case с регулярными выражениями для классификации на группы строк, которые состоят из:

  • одной цифры;
  • двух цифр;
  • одной буквы;
  • двух букв;
  • более двух символов.

Важно: для случая «более двух символов» длина вводимых данных будет проверяться с помощью условного оператора if.

 

case 3

Читайте также: Как использовать цикл until в Linux.

Теперь проверим, как работает наш код:

 

case 3 execution

Выводы

Мы показали Вам базовые примеры использования оператора case в сценариях Bash. Детально изучив показанные скрипты, Вы сможете написать код, при выполнении которого пользователь получает возможность выбора из вариантов.

Спасибо за время, уделенное прочтению статьи!

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасностиполный курс по кибербезопасностикурсы DevNet / DevOps (программируемые системы) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Рубрики:

Bash, Linux

Метки:

Bash, linux

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения


Поиск по сайту
Лучшее
Популярное
Рубрики