Оператор case в Bash

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

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

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

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

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

case EXPRESSION in

  PATTERN_1)
    STATEMENTS
    ;;

  PATTERN_2)
    STATEMENTS
    ;;

  PATTERN_N)
    STATEMENTS
    ;;

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

Пример заявления case

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

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

Оставьте комментарий