Последние новости:

Поиск по сайту:

Надо запастись либо умом, чтобы понимать, либо веревкой, чтобы повеситься (Антисфен).

Шаблон соответствия в заявлении case в Bash1 мин для чтения

14.08.2021
Bash Heredoc

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

Оператор case в bash имеет сходство с оператором switch в JavaScript и C. Однако основное отличие состоит в том, что после совпадения с шаблоном поиск дополнительных совпадений с шаблоном не выполняется.

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

 

Оператор case в Bash

Основная структура оператора case следующая:

case <выражение> in

<pattern_1>)

заявления

;;

<pattern_2>)

заявления

;;
*)

заявления

;;

esac

Вот краткое описание структуры:

  • Оператор case начинается с ключевого слова case и заканчивается ключевым словом esac, подобно тому, как условное if начинается с if и заканчивается на fi.
  • Может быть несколько шаблонов, разделенных знаком «|». Оператор «)» отмечает конец списка шаблонов.
  • Шаблоны могут содержать специальные символы.
  • После сопоставления шаблона будут выполнены связанные с ним команды. Вместе это называется клаузулой. Каждое предложение должно заканчиваться на «;;». Он останавливает любую попытку сопоставления для дальнейших шаблонов.
  • Предложение с подстановочными знаками (*) является обычной практикой для определения регистра по умолчанию. Он всегда будет соответствовать условию.
  • Если ни один шаблон не соответствует, тогда оператор case возвращает ноль. В противном случае он вернет значение выхода выполненных команд.

Понимание оператора if-else в bash полезно для понимания и усвоения оператора case в bash.

 

Примеры операторов case в Bash

Оператор case с использованием числовых значений

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

#!/bin/bash

echo -n "Введите значение: "

read VALUE

case $VALUE in

1)

echo "one" ;;

2)

echo "two" ;;

3)

echo "три" ;;

4 | 5)

echo "больше трех" ;;

*)

echo "неизвестное значение" ;;

esac

 

Читать  Bashhub - открывает доступ к истории терминала из любой точки

Сохраните сценарий. Отметьте его как исполняемый.

$ chmod +x sample.sh

 

Теперь запустим сценарий.

$ ./sample.sh

Скрипт попросит ввести значение. Если значение соответствует любому из шаблонов, будет выполнено предложение сопоставления. Если совпадения не найдено, то оно будет соответствовать предложению по умолчанию.

 

Оператор case с использованием строк

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

#!/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 для запуска, остановки и перезапуска служб.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно

Статьи партнеров:

Рекомендуемое
Наши телефоны везде, куда бы мы ни пошли в современном…
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить

Спасибо! Ваша заявка принята

close

Спасибо! Ваша заявка принята

close