В популярных императивных языках операторы switch обычно "проваливаются" на следующий уровень после сопоставления case-оператора.
Пример:
int a = 2;
switch(a)
{
case 1:
print "quick ";
case 2:
print "brown ";
case 3:
print "fox ";
break;
case 4:
print "jumped ";
}
напечатал бы "коричневую лисицу".
Однако тот же код в bash
A=2
case $A in
2)
echo "QUICK"
;&
2)
echo "BROWN"
;&
3)
echo "FOX"
;&
4)
echo "JUMPED"
;&
esac
печатает только "BROWN"
Как заставить оператор case в bash "провалиться" на остальные условия, такие как первый пример?
(изменить: bash версия 3.2.25, оператор & (из wiki) приводит к синтаксической ошибке)
работает:
test.sh:
#!/bin/bash
A=2
case $A in
1)
echo "QUICK"
;&
2)
echo "BROWN"
;&
3)
echo "FOX"
;&
esac
дает:
./test.sh: строка 6: синтаксическая ошибка около неожиданного токена
;' ./test.sh:
; & '
line 6: