Оператор case в bash имеет сходство с оператором switch в JavaScript и C. Однако основное отличие состоит в том, что после совпадения с шаблоном поиск дополнительных совпадений с шаблоном не выполняется.
В этой статье будут рассмотрены основы оператора case в bash с различными примерами.
Основная структура оператора case следующая:
case <выражение> in <pattern_1>) заявления ;; <pattern_2>) заявления ;; *) заявления ;; esac
Вот краткое описание структуры:
Понимание оператора if-else в bash полезно для понимания и усвоения оператора case в bash.
Теперь, когда мы знаем основы, пора проверить это в действии. Взгляните на следующий сценарий.
#!/bin/bash echo -n "Введите значение: " read VALUE case $VALUE in 1) echo "one" ;; 2) echo "two" ;; 3) echo "три" ;; 4 | 5) echo "больше трех" ;; *) echo "неизвестное значение" ;; esac
Сохраните сценарий. Отметьте его как исполняемый.
$ chmod +x sample.sh
Теперь запустим сценарий.
$ ./sample.sh
Скрипт попросит ввести значение. Если значение соответствует любому из шаблонов, будет выполнено предложение сопоставления. Если совпадения не найдено, то оно будет соответствовать предложению по умолчанию.
В следующем примере мы будем использовать строки для сопоставления значений.
#!/bin/bash echo -n "Введите имя планеты: " read PLANET case $PLANET in Mercury | Venus | Earth | Mars | Jupiter | Saturn | Uranus | Neptune) echo "$PLANET это планета из солнечной системы" ;; Pluto) echo "$PLANET является карликовой планетой" ;; "Planet Nine") echo "$PLANET еще не обнаружено" ;; *) echo "Не из солнечной системы" ;; esac
Скрипт будет работать так же, как и в первом примере. Он запросит имя планеты, проверит, соответствует ли ввод какому-либо предложению, и выполнит предложение соответствия.
Если вы внимательно посмотрите, то заметите, что «Planet Nine» — единственное значение, заключенное в кавычки. Потому что в нем есть место. Используя кавычки, мы говорим оболочке рассматривать это как часть единого шаблона.
Обратите внимание, что в последнем примере ввод чувствителен к регистру. Это поведение bash по умолчанию. Однако мы можем указать оболочке запустить скрипт в режиме без учета регистра.
Для этого добавьте следующую строку в начало скрипта.
$ shopt -s nocasematch
Скрипт должен выглядеть так.
Теперь проверьте сценарий. Введите значение в другом регистре.
$ ./sample.sh
Эта статья охватывает основы операторов case в bash. Он также демонстрирует, как реализовать их в сценариях bash. Вам должно быть удобно использовать оператор case. Операторы case в Bash часто используются для передачи параметров сценариям оболочки из командной строки. Например, сценарии инициализации используют операторы case для запуска, остановки и перезапуска служб.
Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!
Спасибо! Ваша заявка принята
Спасибо! Ваша заявка принята