Синтаксис и примеры case в Bash

Оператор case в bash - это простейшая форма условного оператора if elif else. Оператор case упрощает сложные условия с несколькими вариантами выбора. Этот оператор проще в обслуживании и более читабелен, чем вложенные операторы if.

Оператор case проверяет входное значение, пока не найдет соответствующий шаблон, и выполняет команду, связанную с этим входным значением. Таким образом, это отличный выбор для создания меню, в котором пользователи выбирают опцию, вызывающую соответствующее действие.

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

Оператор bash case имеет следующий синтаксис:

Оператор case начинается с ключевого слова case, за которым следует переменная $ и ключевое слово in. Оператор заканчивается ключевым словом case в обратном порядке - esac.

Сценарий сравнивает вводимое значение $variable с шаблонами в каждом пункте, пока не найдет совпадение.

Шаблоны

  • Шаблон и его команды составляют предложение, которое заканчивается символом ;;.
  • Шаблоны поддерживают специальные символы.
  • Оператор ) завершает список шаблонов.
  • Оператор | разделяет несколько шаблонов.
  • Скрипт выполняет команды, соответствующие первому шаблону, совпадающему с входной переменной $variable.
  • Символ звездочки * определяет случай по умолчанию, обычно в последнем шаблоне.

Скрипт имеет два статуса выхода:

  • 0. Статус возврата, когда входные данные не совпадают с шаблоном.
  • Статус выполненной команды. Если команда соответствует входной переменной шаблону, возвращается статус выхода выполненной команды.

Примеры использования оператора bash case

В этом разделе показаны практические примеры использования оператора bash case.

Пример 1: Вывод описания для каждого варианта

Следующий пример представляет собой сценарий, который позволяет пользователю выбрать цвет и выводит комментарий, соответствующий введенным данным, используя команду echo.

Следуйте приведенным ниже инструкциям:

1. Откройте терминал (Ctrl + Alt + T) и создайте скрипт:

2. Добавьте в сценарий следующие строки:

Каждая из строк играет следующую роль:

  • Первая строка в каждом скрипте - это обычно shebang (#!), который указывает операционной системе, какой интерпретатор использовать для разбора файла.
  • Строки 2-7 - это меню опций, предлагаемых пользователю на выбор.
  • Переменная read color; запрашивает у пользователя ответ и сохраняет его.
  • Оператор case содержит возможные ответы, соответствующие введенным пользователем данным. В данном примере выходом является вывод команды echo.
  • Последняя строка, esac, завершает оператор case.

3. Сохраните сценарий и выйдите

4. Перед запуском каждого скрипта убедитесь, что он имеет chmod, чтобы сделать его исполняемым:

5. Запустите скрипт:

Пример оператора bash case, в котором пользователь получает разное сообщение в зависимости от вводимых данных.

Сценарий предлагает меню опций и выводит другое сообщение в зависимости от выбранной опции.

Пример 1: Вывод описания для каждого варианта

Пример 2: Использование нескольких шаблонов

Оператор case позволяет использовать несколько шаблонов в каждом пункте. Если выражение соответствует указанным шаблонам, сценарий выполняет команды в этом пункте.

В этом примере сценария пользователю предлагается ввести месяц и выводится количество дней. Возможны три варианта ответа:

  • 30 дней.
  • 31 день.
  • 28 или 29 дней для февраля.

Для создания сценария выполните следующие шаги:

1. Создайте сценарий month.sh, выполнив:

2. Введите следующие строки и сохраните сценарий:

В приведенном выше примере:

  • Команда shopt с опцией -s nocasematch уменьшает вероятность ошибки, поскольку сопоставление шаблонов нечувствительно к регистру.
  • Символ | разделяет шаблоны в каждом из пунктов.

3. Сделайте скрипт исполняемым:

4. Запустите скрипт:

Оператор case, который выводит количество дней в запрашиваемом месяце.

Сценарий игнорирует различия в регистре и выводит правильное количество дней в выбранном месяце.

Пример 3: цикл for

Используйте цикл for в операторах case, когда необходимо обработать множество выражений. Следующий сценарий возвращает все типы файлов из каталога.

Выполните следующие шаги:

1. Создайте сценарий оболочки:

2. Введите следующие строки, а затем сохраните сценарий:

В приведенном выше примере:

  • Команда ls извлекает список файлов из каталога.
  • В цикле for применяется группировка файлов для извлечения расширения каждого файла.

3. Сделайте скрипт исполняемым:

4. Выполните сценарий:

Пример 3: цикл for

Сценарий идентифицирует каждый тип файла, присутствующий в текущем каталоге.

Пример 4: Создание адресной книги

Используйте оператор case для создания простой базы данных и быстрой генерации запрашиваемой информации. В следующем примере выводятся имя, адрес электронной почты и адрес выбранного человека:

1. Создайте сценарий:

2. Добавьте следующие строки и сохраните сценарий:

3. Сделайте скрипт исполняемым:

4. Выполните скрипт:

Создание базы данных контактов с помощью оператора bash case в Linux.

Сценарий выводит контактные данные выбранного человека. Выбор варианта, который не указан в списке, уведомляет пользователя о том, что контакт не существует.

Пример 5: Проверка типа символов

В следующем примере показано, как с помощью оператора case проверить, какой тип символов ввел пользователь.

Выполните следующие шаги:

1. Создайте сценарий:

2. Добавьте следующие строки и сохраните скрипт:

В приведенном выше примере:

  • Управляющая переменная $var хранит вводимые данные.
  • Вместо того чтобы вводить все возможные комбинации для сравнения, используйте квадратные скобки [] для обозначения диапазона символов. Для диапазонов POSIX используйте двойные квадратные скобки [[]]. if-else требует ввода каждого символа условия по отдельности.
  • Символ ? охватывает символы, которые не являются строчными, прописными или цифрами. Он заменяет только один символ, в отличие от *, который заменяет все остальные, не предусмотренные условиями выше.

Хотя можно использовать [a-z] для обозначения диапазона строчных символов, в некоторых дистрибутивах Linux символы верхнего регистра также входят в данную последовательность.

3. Измените права доступа, чтобы сделать сценарий исполняемым:

4. Выполните скрипт:

Проверка типа вводимого символа с помощью оператора bash case.

Заключение

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий