case в bash скриптах
10.4. Операторы выбора
Инструкции case и select технически не являются циклами, поскольку не предусматривают многократное исполнение блока кода. Однако, они, как и циклы, управляют ходом исполнения программы, в зависимости от начальных или конечных условий.
Конструкция case эквивалентна конструкции switch в языке C/C++. Она позволяет выполнять тот или иной участок кода, в зависимости от результатов проверки условий. Она является, своего рода, краткой формой записи большого количества операторов if/then/else и может быть неплохим инструментом при создании разного рода меню.
Заключать переменные в кавычки необязательно, поскольку здесь не производится разбиения на отдельные слова. Блок case должен завершаться ключевым словом esac ( case записанное в обратном порядке). Пример 10-24. Использование case Пример 10-25. Создание меню с помощью case Очень хороший пример использования case для анализа аргументов, переданных из командной строки. Пример 10-26. Оператор case допускает использовать подстановку команд вместо анализируемой переменной Оператор case допускает использование шаблонных конструкций. Пример 10-27. Простой пример сравнения строк Пример 10-28. Проверка ввода Оператор select был заимствован из Korn Shell, и является еще одним инструментом, используемым при создании меню. Пример 10-29. Создание меню с помощью select Сравните это с поведением оператора цикла в котором не задан список аргументов. Пример 10-30. Создание меню с помощью select в функции Оператор case в BashОператор case bash обычно используется для упрощения сложных условных выражений, когда у вас есть несколько разных вариантов. Использование оператора case вместо вложенных операторов if поможет вам сделать ваши сценарии bash более читабельными и простыми в обслуживании. Оператор case Bash имеет аналогичную концепцию с оператором switch Javascript или C. Основное отличие состоит в том, что в отличие от оператора C switch оператор case в Bash не продолжает поиск совпадения с шаблоном после того, как он нашел один и выполнил операторы, связанные с этим шаблоном. В этом руководстве мы рассмотрим основы оператора case в Bash и покажем вам, как использовать его в сценариях оболочки. синтаксис оператора caseОператор case Bash имеет следующую форму: Пример заявления caseВот пример использования оператора case в сценарии bash, который будет печатать официальный язык данной страны: Сохраните настраиваемый сценарий как файл и запустите его из командной строки. Скрипт попросит вас ввести страну. Например, если вы наберете «Литва», он будет соответствовать первому шаблону, и будет выполнена команда echo в этом предложении. Сценарий напечатает следующий вывод: Если вы введете страну, которая не соответствует никакому другому шаблону, кроме подстановочного знака звездочки по умолчанию, скажем, Аргентины, сценарий выполнит команду echo внутри предложения по умолчанию. ВыводыК настоящему времени вы должны хорошо понимать, как писать операторы case bash. Они часто используются для передачи параметров сценарию оболочки из командной строки. Например, сценарии инициализации используют операторы case для запуска, остановки или перезапуска служб. Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии. Bash оператор CaseBash Case StatementВ этом руководстве мы рассмотрим основы case оператора Bash и покажем, как его использовать в сценариях оболочки.Инструкция bash case обычно используется для упрощения сложных условий, когда у вас есть несколько различных вариантов выбора. Использование case оператора вместо вложенных if операторов поможет вам сделать ваши bash-сценарии более удобочитаемыми и более простыми в обслуживании. Оператор Bash case имеет аналогичную концепцию с switch оператором Javascript или C. Основное отличие состоит в том, что, в отличие от switch оператора C, оператор Bash case не продолжает поиск соответствия шаблону после того, как он нашел один и выполнил операторы, связанные с этим шаблоном. Синтаксис оператора caseОператор Bash case принимает следующую форму: Пример описания случаяВот пример использования case оператора в скрипте bash, который будет печатать официальный язык данной страны: Сохраните пользовательский скрипт в виде файла и запустите его из командной строки. Скрипт попросит вас ввести страну. Например, если вы введете «Литва», он будет соответствовать первому шаблону, и echo команда в этом предложении будет выполнена. Скрипт выведет следующий вывод: Если вы введете страну, которая не соответствует ни одному другому шаблону, кроме подстановочного символа по умолчанию, скажем, Аргентина, скрипт выполнит echo команду внутри предложения по умолчанию. ВыводПример создания простого Bash скрипта с использованием операторов case и функцийСкрипт полностью приведен ниже, далее дается разъяснение принципов его работы. function debian()< clear echo «That is not an option» Объяснение принципов работы скрипта с case и функциейПервой строкой указывается имя интерпретатора команд Назначается значение переменной, приравниваем x нулю, чтобы выйти из цикла будет значение переменной итерировать Создаем функцию debian, выводящую вопрос «Do u prefer Debian Mint or Ubuntu?» и считывающую ответ пользователя. function debian()< Используя case задаем две опции: Если ответ Ubuntu (с учетом регистра в первом символе) выводим «oh, u like Ubuntu» В случае если пользователь выбрал Mint выводим «good, u like Linux Mint» Если совпадения не найдено — «Um? U typed smth that’s not right» Завершаем case с esac и интерируем значение x чтобы выйти из цикла. Функция сейчас только задана, вызываться она будет на втором этапе выполнения программы. Начало собственно программы (так как его увидит пользователь). Очищаем экран и задаем главный вопрос «Do u use Debian or CentOS?» clear Считываем ответ пользователя при помощи read и реагируем на совпадения При указании на Debian в любом регистре (первый символ) вызываем заданную ранее функцию debian, которая задаст уточняющий вопрос о любимом дистрибутиве основанном на debian В случае выбора CentOS просто выводим фразу «U use CentOS». Регистр здесь учитываем как для первого знака, так и для последних двух echo «That is not an option» Для любого другого ввода пользователя будет действовать правило заданное с *). Ответ системы будет «That is not an option», затем пауза продолжительностью 1 секунду и повторный запуск основной программы с начала. Используя case можно, например, написать простое консольное меню Шаблон соответствия в заявлении case в BashГлавное меню » Linux » Шаблон соответствия в заявлении case в Bash Оператор case в bash имеет сходство с оператором switch в JavaScript и C. Однако основное отличие состоит в том, что после совпадения с шаблоном поиск дополнительных совпадений с шаблоном не выполняется. В этой статье будут рассмотрены основы оператора case в bash с различными примерами. Оператор case в BashОсновная структура оператора case следующая: Вот краткое описание структуры: Понимание оператора if-else в bash полезно для понимания и усвоения оператора case в bash. Примеры операторов case в BashОператор case с использованием числовых значенийТеперь, когда мы знаем основы, пора проверить это в действии. Взгляните на следующий сценарий. Сохраните сценарий. Отметьте его как исполняемый. Теперь запустим сценарий. Скрипт попросит ввести значение. Если значение соответствует любому из шаблонов, будет выполнено предложение сопоставления. Если совпадения не найдено, то оно будет соответствовать предложению по умолчанию. Оператор case с использованием строкВ следующем примере мы будем использовать строки для сопоставления значений. Скрипт будет работать так же, как и в первом примере. Он запросит имя планеты, проверит, соответствует ли ввод какому-либо предложению, и выполнит предложение соответствия. Если вы внимательно посмотрите, то заметите, что «Planet Nine» – единственное значение, заключенное в кавычки. Потому что в нем есть место. Используя кавычки, мы говорим оболочке рассматривать это как часть единого шаблона. Чувствительность к регистру в заявлении о регистреОбратите внимание, что в последнем примере ввод чувствителен к регистру. Это поведение bash по умолчанию. Однако мы можем указать оболочке запустить скрипт в режиме без учета регистра. Для этого добавьте следующую строку в начало скрипта. Скрипт должен выглядеть так. Теперь проверьте сценарий. Введите значение в другом регистре. Последние мыслиЭта статья охватывает основы операторов case в bash. Он также демонстрирует, как реализовать их в сценариях bash. Вам должно быть удобно использовать оператор case. Операторы case в Bash часто используются для передачи параметров сценариям оболочки из командной строки. Например, сценарии инициализации используют операторы case для запуска, остановки и перезапуска служб. Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
|