case
оператор в Баш выполняет команды в COMMAND-LIST
для только первый матч.
Однако в bash version 4
или более поздней версии был введен терминатор ;&
. Оператор ;;&
похож на ;;
, за исключением того, что оператор case не заканчивается после выполнения связанного списка. Bash просто продолжает тестирование следующего шаблона, как если бы предыдущий шаблон не соответствовал. Используя эти терминаторы, оператор case может быть настроен для проверки всех шаблонов или совместного использования кода между блоками.
Ссылка: Выдержки взяты из http://wiki.bash-hackers.org/syntax/ccmd/case
Так что, если у вас есть bash v 4 or later
это даст желаемый результат:
#!/bin/sh
action="titi"
case "$action" in
toto|titi)
echo "1_$action"
;;&
tata|titi)
echo "2_$action"
;;
esac
То, что вы хотите, называется «провалиться». Пожалуйста, взгляните на: http://stackoverflow.com/questions/12010686/case-statement-fallthrough – Josay
Каков ожидаемый результат и что вы получили? Ожидаете ли вы '1_titi' и' 2_titi' вместе? – VoidPointer
@VoidPointer exactelly Я ожидал 1_titi и 2_titi вместе – MOHAMED