Linux bash case example

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, и является еще одним инструментом, используемым при создании меню.

Этот оператор предлагает пользователю выбрать один из представленных вариантов. Примечательно, что select по-умолчанию использует в качестве приглашения к вводу (prompt) — PS3 ( #? ), который легко изменить.

Пример 10-29. Создание меню с помощью select

Если в операторе select список in list не задан, то в качестве списка будет использоваться список аргументов ( $@), передаваемый сценарию или функции.

Сравните это с поведением оператора цикла

в котором не задан список аргументов.

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

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

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

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

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

Сценарий напечатает следующий вывод:

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

Выводы

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

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

Источник

Bash оператор Case

Bash Case Statement

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

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

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

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

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

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

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

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

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

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

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

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

Вывод

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

Источник

BASH Case Command

Bash case command is used to take proper action by comparing data like if statement. It works like a switch-case statement of other standard programming languages. This command starts with ‘case’ statement and closes by ‘esac’ statement. No break statement is used in the case command and double bracket (;;) is required to mention the statement(s) for any particular matching. This command expands the expression and tries to match with the given pattern and the exit status code of this command will be zero if no matching will be found. Some common examples of case statements are shown in this tutorial.

Example-1: simple case statement

A single conditional expression is used in bash case command to generate the output based on the matching condition. Create a bash file named case1.sh with the following bash script. The script will take a string value and match the value with each expression. The following script will generate “No Entry Found” if no matching expression exists,
case1.sh

#!/bin/bash
echo «Type your name»

read name
case $name in
Yesmin )
echo «Your favorite color is blue» ;;
Fahmida )
echo «Your favorite drink is Sprite» ;;
* )
echo «No Entry Found» ;;
esac

The file is executed with a valid and invalid input here to test the output.

Example-2: multiple case statement with pipe

Multiple case expressions can be applied in the bash script to execute different types of statements. Pipe ( | ) symbol can be used to assign the multiple expressions. Create a bash file named case2.sh with the following script. After running the script, if the input value matches with any expression then the corresponding text value will be printed.
case2.sh

#!/bin/bash
echo «Type your ID number»

read ID
case $ID in
65341 )
echo «Your position is 1st» ;;
97564 | 88453 )
echo «Your position is 2nd» ;;
45087 )
echo «Your position is 3rd» ;;
* )
echo «Invalid ID» ;;
esac

This script also works like the previous example. The only difference is that the multiple expression values are tested for a single output.

Example-3: How to quit from case/esac statement block

When the bash case command is used under an infinite loop the exit command is required to use to terminate the loop. This example shows how these types of the task can be done. Create a text file named case3.sh with the following script. This script will take any number from 1 to 3 as input. If the input is 1 then two numbers will be added, if the input is 2 then two numbers will be subtracted and if the input number is 3 then two numbers will be multiplied. The output will be “Invalid entry” if the input number is more than 3 or less than 1 or empty.
case3.sh

while ( true )
do
a = 8
b = 4
( ( x = $a + $b ) )
( ( y = $a — $b ) )
( ( z = $a * $b ) )

echo «Type 1 or 2 or 3»
read ans
case $ans in
1 ) echo «The sum of $a and $b is $x & exit» ;;
2 ) echo «The subtraction of $a and $b is $y & exit» ;;
3 ) echo «The multiplication of $a and $b is $z & exit» ;;
* ) echo «Invalid entry»
esac
done

The script will continue to execute until ctrl+c will be pressed.

Example-4: Checking empty command line argument value

Command line argument variable can be used in the bash case statement. Create a file named case4.sh with the following script that will check the value of the second argument variable.

Here, the script is executed without any second command line argument value for the first time and the output shows “The second argument is empty”. When the script is executed with a second command line argument value for the second time then no output is shown.

Example-5: multiple case statement based on user input

Create a bash file named case5.sh with the following script. The script will take month name as user input. If the month name match with any case value then a particular text message will be assigned into the variable Message. Input value must be the full month name or three characters month name.

case5.sh

echo «Type the name of a month»
read month

January | Jan * )
Message = » 21st February is our International Mother’s day.»
;;
February | Feb * )
Message = » 21st February is our International Mother’s day.»
;;
March | Mar * )
Message = «9th March is the world kidney day.»
;;
April | Apr * )
Message = «The current month is not February»
;;
May | May * )
Message = «The current month is February»
;;

June | Jun * )
Message = «The current month is February»
;;

* )
Message = «No matching information found»
;;
esac

The following output will appear for the input value, ‘March’ or ‘Mar’.

Example-6: Check variable in the bash case statement

Any string value can be printed by checking the value of the command line argument variable. Create a text file named case6.sh with the following script. In this example, the value of the first argument variable is checked and if the value is empty then a string, “I like bash programming” will be printed.

case6.sh

case $1 in
( «» ) echo «I like bash programming» ;
esac

This script is executed with and without first arguments. There will be no output if no command line argument variable passes.

Conclusion

Different uses of bash case command are shown in this article. If the readers practice these examples properly then it will be easier for them to solve many bash programming problems.

About the author

Fahmida Yesmin

I am a trainer of web programming courses. I like to write article or tutorial on various IT topics. I have a YouTube channel where many types of tutorials based on Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel etc. are published: Tutorials4u Help.

Источник

Читайте также:  Intel undervolting utility mac os
Оцените статью