Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

Поведение оператора выбора case

Ответить
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Поведение оператора выбора case

Сообщение nezabudka »

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

Код: Выделить всё

#!/usr/bin/env bash
case "1" in
    1) echo 1;&
    2) echo 2;;&
    3) echo 3;;
    *) echo x
esac
Я поблагодарила адепта и тороплюсь поделиться с соотечественниками
которые как и я не хотят по долгу сидеть за манами.
Ну и конечно отсыл к первоисточникам
Для консерваторов:

Код: Выделить всё

LESS=+/"case word in" man bash
Для реформаторов:

Код: Выделить всё

info --index-search="case" bash
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Ответить

Вернуться в «Bash»