In populären Imperativ-Sprachen "fallen" Switch-Anweisungen im Allgemeinen auf die nächste Ebene, sobald eine Case-Anweisung abgeglichen wurde.Fallanweisung Fallthrough?
Beispiel:
int a = 2;
switch(a)
{
case 1:
print "quick ";
case 2:
print "brown ";
case 3:
print "fox ";
break;
case 4:
print "jumped ";
}
würde "brown fox" drucken.
jedoch der gleiche Code in bash
A=2
case $A in
2)
echo "QUICK"
;&
2)
echo "BROWN"
;&
3)
echo "FOX"
;&
4)
echo "JUMPED"
;&
esac
nur prints "BROWN"
Wie kann ich die Case-Anweisung in bash machen "fallen durch" auf die übrigen Bedingungen wie das erste Beispiel?
(edit: Bash Version 3.2.25, die; & Aussage (from wiki) führt zu einem Syntaxfehler)
Lauf:
test.sh:
#!/bin/bash
A=2
case $A in
1)
echo "QUICK"
;&
2)
echo "BROWN"
;&
3)
echo "FOX"
;&
esac
Gibt:
./test.sh: Zeile 6: Syntaxfehler in der Nähe des unerwarteten Tokens
;' ./test.sh:
; & '
line 6:
Added Fehler für; & – Resorath
Verwandte (aber nicht duplizieren) Frage: [Fall mit Fallthrough?] (Http://stackoverflow.com/q/5562253) (in Bezug auf den Operator '|' zum Trennen mehrerer Muster in einem 'case' Ausdruck). – TachyonVortex