добро пожаловать назад, давайте продолжим и поговорим об операторе
case, конструкция case позволяет нам тестировать строки и числа и на самом деле является более простой формой операторов
bash if alif else, если вы переходите с других языков программирования,
вы должны знать, что оператор case в bash похож на оператор switch в cc
plus plus или java, эта программная конструкция не является циклом, она не выполняет блок кода
n количество раз, вместо этого оболочка bash проверяет условия и контролирует поток программы
bash Оператор case принимает следующую форму: каждый оператор case начинается с ключевого слова case,
за которым следует выражение и ключевое слово in, весь оператор заканчивается точным ключевым словом, у
вас может быть несколько шаблонов, разделенных вертикальной чертой, например вертикальной чертой, оператор скобки
завершает список шаблонов шаблон может содержать специальные символы, такие как звездочки
или вопросительные знаки. шаблон и связанные с ним комментарии известны как предложение, и каждое предложение
должно быть завершено с двойными точками с запятой выполняются комментарии, соответствующие первому шаблону, который
соответствует выражению. Обычной практикой является использование подстановочного символа звездочки
в качестве окончательного шаблона для определения случая по умолчанию, этот шаблон всегда будет соответствовать после первого максимума, которым
оператор case завершается статус выхода последней выполненной команды,
давайте посмотрим, как это работает, на примере: я создаю новый скрипт с именем favourite. 6
пользователь вводит своего любимого питомца, и на основе его ответа оператор case
распечатает конкретное сообщение echo minus n введите свой любимый путь на
этот раз я показываю сообщение с помощью echo
и опцию minus 10, чтобы не добавлять новую строку после строки и читать ставки, я читаю
ответ в переменной с именем pet теперь case statement case доллар домашнее животное между двойными кавычками
и первым шаблоном будет собака эхо, ваше любимое домашнее животное - док,
и не забывайте двойные точки с запятой в конце операторов и второй шаблон в
это время e я буду использовать оператор или, который представляет собой вертикальную черту cat, написанную строчными буквами
pipe cat, написанную заглавной c
echo, которое вам нравится cacks
и двойные точки с запятой, и последний шаблон, если есть строка, содержащая пробелы,
ее следует заключить в двойные кавычки например, рыбная трубка и африканская черепаха между двойными кавычками,
поэтому рыба или черепахи великолепны,
и, наконец, как риск и закрывающая скобка, это случай по умолчанию,
который соответствует чему-либо, поэтому, если пользователь вводит другое значение,
инструкции этого шаблона будут выполнены вашим любимым pet неизвестен,
и точное ключевое слово, которое завершает случай,
я сохраняю скрипт, добавляя разрешение на выполнение и запускаю его,
и я вхожу в dog, и сообщение является ожидаемым,
теперь cat perfect cat, написанное с большой буквы c
рыбой и африканской черепахой
и если пользователь вводит что-то еще, будут выполнены операторы шаблона по умолчанию,
давайте посмотрим второй пример, на этот раз настоящий iphone, я хочу создать сценарий, который
принимает два аргумента s первый аргумент - это номер сигнала, а второй
- идентификатор процесса, и сценарий отправит номер сигнала на идентификатор процесса,
я сначала проверяю, что сценарий запускается ровно с двумя аргументами, помните, что количество
аргументов сохраняется в предопределенная переменная хэш доллара, поэтому, если хеш доллара
не равен 2, я выйду, а
затем эхо запустите скрипт с двумя аргументами: сигнал и идентификатор процесса и выход и оператор case, я
отправляю правильный сигнал на основе значения первый аргумент сценария, так что случай доллар один в
префиксе один, я отправляю сигнал концентратора sig процессу на pid,
поэтому эхо отправляет сигнал sig hup в dalat, чтобы он был идентификатором процесса
kill минус sig hap,
если x2 я отправляю секущий сигнал для идентификатора процесса
, кстати, вы можете увидеть список со всеми сигналами, запустив kill minus l
kill minus sigint доллар к идентификатору процесса и, конечно, здесь также доллар и еще один
15 эхо сигнала по умолчанию, отправляющее поиск срочный сигнал к доллару два
и номер сигнала шаблона по умолчанию, пробег в долларах не будет доставлен
, это мой сценарий, я сохраняю его, устанавливая необходимое разрешение
и запускаю его в другом терминале, я хочу, чтобы вы одновременно видели сценарий,
поэтому я запускаю команду сна, я нахождение идентификатора процесса x,
и я запускаю сценарий, я отправляю сигнал концентратора sig, поэтому 1 и идентификатор процесса 5 0
6 4, и сигнал был доставлен процессу,
если я запустил сценарий без каких-либо аргументов, он скажет запустить скрипт с двумя аргументами, сигнал
и идентификатор процесса, это, если условие тестирования было оценено как истинное, и этот фрагмент кода был запущен,
то же самое произойдет, если я запустил скрипт с более чем двумя аргументами,
хорошо, это все о случае, спасибо