Die Bash-Anweisung case
wird üblicherweise verwendet, um komplexe Bedingungen zu vereinfachen, wenn du mit mehreren verschiedenen Möglichkeiten umgehen musst. Wenn du die case
-Anweisung anstelle von verschachtelten if
-Anweisungen verwendest, wird dein Bash-Skript leichter lesbar und einfacher zu warten sein.
Die Bash case
Anweisung funktioniert ähnlich wie die Javascript- oder C switch
Anweisung. Der Hauptunterschied besteht darin, dass die Bash case
-Anweisung nicht weiter nach weiteren Übereinstimmungen sucht, sobald sie eine gefunden hat und die damit verknüpften Anweisungen ausgeführt wurden, im Gegensatz zur C switch
-Anweisung.
In diesem Tutorial werden die Grundlagen der Bash case
-Anweisung behandelt und gezeigt, wie sie in Shell-Skripten verwendet werden kann.
case
Anweisung Syntax
Die Bash case
-Anweisung hat die folgende Form:
case AUSDRUCK in
MUSTER_1)
ANWEISUNGEN
;;
MUSTER_2)
ANWEISUNGEN
;;
MUSTER_N)
ANWEISUNGEN
;;
*)
ANWEISUNGEN
;;
esac
- Jede
case
-Anweisung beginnt mit dem Schlüsselwortcase
, gefolgt vom Case-Ausdruck und dem Schlüsselwortin
. Die Anweisung endet mit dem Schlüsselwortesac
. - Es können mehrere Muster verwendet werden, die durch den Operator
|
getrennt sind. Der)
-Operator beendet eine Liste von Mustern. - Ein Muster kann Sonderzeichen enthalten.
- Ein Muster und die dazugehörigen Anweisungen bilden eine Klausel.
- Jede Klausel muss mit
;;
abgeschlossen werden. - Die Anweisungen, die dem ersten Muster entsprechen, das mit dem Ausdruck übereinstimmt, werden ausgeführt.
- Es ist gängige Praxis, das Sternchen-Symbol (
*
) als letztes Muster zu verwenden, um den Standardfall zu definieren. Dieses Muster passt immer. - Wenn kein Muster gefunden wird, ist der Rückgabestatus Null. Ansonsten ist der Rückgabestatus der Exit-Status der ausgeführten Anweisungen.
Beispiel für die Fallanweisung
Hier ist ein Beispiel für die Verwendung der case
-Anweisung in einem Bash-Skript, das die offizielle Sprache eines bestimmten Landes ausgibt:
languages.sh
#!/bin/bash
echo -n "Gib den Namen eines Landes ein: "
lies LAND
echo -n "Die offizielle Sprache von $LAND ist "
case $LAND in
Litauen)
echo -n "Litauisch"
;;
Rumänien | Moldawien)
echo -n "Rumänisch"
;;
Italien | "San Marino" | Schweiz | "Vatikanstadt")
echo -n "Italienisch"
;;
*)
echo -n "unbekannt"
;;
esac
Speichere das benutzerdefinierte Skript als Datei und führe es über die Kommandozeile aus.
bash languages.sh
Das Skript wird dich auffordern, ein Land einzugeben. Wenn du zum Beispiel Litauen eingibst, wird es mit dem ersten Muster übereinstimmen, und der echo
-Befehl in dieser Klausel wird ausgeführt.
Das Skript gibt die folgende Ausgabe aus:
Gib den Namen eines Landes ein: Litauen
Die offizielle Sprache von Litauen ist Litauisch
Wenn du ein Land eingibst, das keinem anderen Muster außer dem standardmäßigen Sternchen-Symbol entspricht, zum Beispiel Argentinien, führt das Skript die echo
-Anweisung innerhalb der Standardklausel aus.
Gib den Namen eines Landes ein: Argentinien
Die offizielle Sprache von Argentinien ist unbekannt
Abschluss
Nun solltest du ein gutes Verständnis dafür haben, wie man Bash case
-Anweisungen schreibt. Diese Anweisungen werden häufig verwendet, um einem Shell-Skript von der Kommandozeile aus Parameter zu übergeben. Init-Skripte verwenden zum Beispiel case
-Anweisungen, um Dienste zu starten, zu stoppen oder neu zu starten.
Wenn du Fragen oder Feedback hast, kannst du gerne einen Kommentar hinterlassen.