Поведение оператора выбора case
Добавлено: 26 янв 2019, 12:52
Общаясь на одном буржуйском форуме, наткнулась на пост.
Начинающему скриптописателю показалось странным поведение
оператора case, а для меня обернулось новым неожиданным знанием
Ситуация следующая. Каждый блок комманд, кроме последней в теле оператора
должен завершаться двумя символами точка с запятой. Как я и знала, но
оказывается если закончить блок точкой запятой с последующим знаком
амперсанд, то выполнится и следующий блок кода даже если нет совпадения
по шаблону! Далее, если блок команд закончить двумя знаками точка с запятой и амперсандом
то все остальные шаблоны так же будут проверены до появления совпадения. Вообщем вот:
Я поблагодарила адепта и тороплюсь поделиться с соотечественниками
которые как и я не хотят по долгу сидеть за манами.
Ну и конечно отсыл к первоисточникам
Для консерваторов:
Для реформаторов:
Начинающему скриптописателю показалось странным поведение
оператора 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