case в bash скриптах

10.4. Операторы выбора

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

Конструкция case эквивалентна конструкции switch в языке C/C++. Она позволяет выполнять тот или иной участок кода, в зависимости от результатов проверки условий. Она является, своего рода, краткой формой записи большого количества операторов if/then/else и может быть неплохим инструментом при создании разного рода меню.

case в bash скриптах. note. case в bash скриптах фото. case в bash скриптах-note. картинка case в bash скриптах. картинка note. Инструкции case и select технически не являются циклами, поскольку не предусматривают многократное исполнение блока кода. Однако, они, как и циклы, управляют ходом исполнения программы, в зависимости от начальных или конечных условий.

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

    Блок 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 оператор Case

    Bash Case Statement

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

    case в bash скриптах. 7641f93ee76aa3c640beda64050ec57a. case в bash скриптах фото. case в bash скриптах-7641f93ee76aa3c640beda64050ec57a. картинка case в bash скриптах. картинка 7641f93ee76aa3c640beda64050ec57a. Инструкции case и select технически не являются циклами, поскольку не предусматривают многократное исполнение блока кода. Однако, они, как и циклы, управляют ходом исполнения программы, в зависимости от начальных или конечных условий.

    Инструкция 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 «Do u prefer Debian Mint or Ubuntu?»
    read debian
    case «$debian» in
    [Uu]buntu) echo «oh, u like Ubuntu»;;
    [Mm]int) echo «good, u like Linux Mint»;;
    *) echo «Um? U typed smth that’s not right»;;
    esac
    x=1
    >

    clear
    echo «Do u use Debian or CentOS?»
    read fruit

    echo «That is not an option»
    sleep 1
    clear
    echo «Please type either Debian or CentOS»
    sleep 1
    ;;
    esac

    Объяснение принципов работы скрипта с case и функцией

    Первой строкой указывается имя интерпретатора команд

    Назначается значение переменной, приравниваем x нулю, чтобы выйти из цикла будет значение переменной итерировать

    Создаем функцию debian, выводящую вопрос «Do u prefer Debian Mint or Ubuntu?» и считывающую ответ пользователя.

    function debian()<
    clear
    echo «Do u prefer Debian Mint or Ubuntu?»
    read debian

    Используя case задаем две опции:
    case «$debian» in
    [Uu]buntu) echo «oh, u like Ubuntu»;;

    Если ответ Ubuntu (с учетом регистра в первом символе) выводим «oh, u like Ubuntu»
    [Mm]int) echo «good, u like Linux Mint»;;

    В случае если пользователь выбрал Mint выводим «good, u like Linux Mint»
    *) echo «Um? U typed smth that’s not right»;;

    Если совпадения не найдено — «Um? U typed smth that’s not right»
    esac
    x=1
    >

    Завершаем case с esac и интерируем значение x чтобы выйти из цикла.

    Функция сейчас только задана, вызываться она будет на втором этапе выполнения программы.

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

    Очищаем экран и задаем главный вопрос «Do u use Debian or CentOS?»

    clear
    echo «Do u use Debian or CentOS?»
    read systems

    Считываем ответ пользователя при помощи read и реагируем на совпадения

    При указании на Debian в любом регистре (первый символ) вызываем заданную ранее функцию debian, которая задаст уточняющий вопрос о любимом дистрибутиве основанном на debian

    В случае выбора CentOS просто выводим фразу «U use CentOS».

    Регистр здесь учитываем как для первого знака, так и для последних двух
    *)

    echo «That is not an option»
    sleep 1
    clear
    echo «Please type either Debian or CentOS»
    sleep 1
    ;;
    esac

    Для любого другого ввода пользователя будет действовать правило заданное с *). Ответ системы будет «That is not an option», затем пауза продолжительностью 1 секунду и повторный запуск основной программы с начала.

    Используя case можно, например, написать простое консольное меню

    Источник

    Шаблон соответствия в заявлении case в Bash

    Главное меню » Linux » Шаблон соответствия в заявлении case в Bash

    case в bash скриптах. Bash Heredoc. case в bash скриптах фото. case в bash скриптах-Bash Heredoc. картинка case в bash скриптах. картинка Bash Heredoc. Инструкции case и select технически не являются циклами, поскольку не предусматривают многократное исполнение блока кода. Однако, они, как и циклы, управляют ходом исполнения программы, в зависимости от начальных или конечных условий.

    Оператор 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.

    Источник

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *