Ich versuche so etwas zu machen:
case $level in
3)
echo "Level Three"
2)
echo "Level Two"
1)
echo "Level one"
;;
esac
wo, wenn $ level = 3, würde es ausgeben
Level Three
Level Two
Level One
Wenn $ level = 1 ist, wird nur ausgegeben
Level One
Aber wenn ich es versuche, bekomme ich den Fehler, syntax error near unexpected token ')'
weil ich den nicht mit einbezogen habe ;;
.
Jede andere Sprache, die ich kenne, erlaubt dies. Gibt es eine Möglichkeit, dies in Bash zu tun? Irgendeine Art von Schlüsselwort, das bedeutet "Jetzt mach weiter und mach den nächsten Fall so, als ob er übereinstimmt"?
bash
shell-script
Benubird
quelle
quelle
Antworten:
Sie müssen Folgendes
;&
verwenden;;
, um ein Fall-Through-Verhalten zu erhalten:Weitere Informationen finden Sie im Abschnitt Bedingte Konstrukte in der bash-Dokumentation.
Der andere spezielle Marker ist
;;&
, welcher:;;
ist immer endgültig, werden keine weiteren Muster getestet.quelle
ksh
und ist verfügbar inksh
,bash
(seit 4.0, 2009) undzsh
(seit 3.1.2, 1997).;;&
ist bash-spezifisch.zsh
Äquivalent vonbash
's;;&
ist;|
(hinzugefügt in 4.3.3, 2007).