Bash оператор Case

Bash Case Statement

21 Июня 2020 | Терминал

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

Bash оператор Case

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

Оператор Bash case имеет аналогичную концепцию с switch оператором Javascript или C. Основное отличие состоит в том, что, в отличие от switch оператора C, оператор Bash case не продолжает поиск соответствия шаблону после того, как он нашел один и выполнил операторы, связанные с этим шаблоном.


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

Оператор Bash case принимает следующую форму:

case EXPRESSION in

  PATTERN_1)
    STATEMENTS
    ;;

  PATTERN_2)
    STATEMENTS
    ;;

  PATTERN_N)
    STATEMENTS
    ;;

  *)
    STATEMENTS
    ;;
esac
 

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


Пример описания случая 

Вот пример использования case оператора в скрипте bash, который будет печатать официальный язык данной страны:

languages.sh
#!/bin/bash

echo -n "Enter the name of a country: "
read COUNTRY

echo -n "The official language of $COUNTRY is "

case $COUNTRY in

  Lithuania)
    echo -n "Lithuanian"
    ;;

  Romania | Moldova)
    echo -n "Romanian"
    ;;

  Italy | "San Marino" | Switzerland | "Vatican City")
    echo -n "Italian"
    ;;

  *)
    echo -n "unknown"
    ;;
esac
 

Сохраните пользовательский скрипт в виде файла и запустите его из командной строки.

bash languages.sh 

Скрипт попросит вас ввести страну. Например, если вы введете «Литва», он будет соответствовать первому шаблону, и echo команда в этом предложении будет выполнена.

Скрипт выведет следующий вывод:

Enter the name of a country: Lithuania
The official language of Lithuania is Lithuanian
 

Если вы введете страну, которая не соответствует ни одному другому шаблону, кроме подстановочного символа по умолчанию, скажем, Аргентина, скрипт выполнит echo команду внутри предложения по умолчанию.

Enter the name of a country: Argentina
The official language of Argentina is unknown
 

Вывод

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


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...