Der Bash-case
-Anweisung wird im Allgemeinen verwendet, um komplexe Bedingungen zu vereinfachen, wenn Sie mehrere verschiedene Möglichkeiten haben. Verwenden des case
-Anweisung anstelle von verschachteltem if
-Anweisungen helfen Ihnen dabei, Ihre Bash-Skripte besser lesbar und wartungsfreundlicher zu machen.
Der Bash-case
-Anweisung hat ein ähnliches Konzept wie Javascript oder C switch
Erklärung. Der Hauptunterschied besteht darin, dass im Gegensatz zu C switch
-Anweisung, der Bash-case
-Anweisung sucht nicht weiter nach einer Musterübereinstimmung, sobald sie eine gefunden und Anweisungen ausgeführt hat, die diesem Muster zugeordnet sind.
In diesem Tutorial behandeln wir die Grundlagen des Bash-case
-Anweisung und zeigen Ihnen, wie Sie sie in Ihren Shell-Skripten verwenden.
case
Anweisungssyntax #
Der Bash-case
Die Anweisung hat folgende Form:
case EXPRESSION in
PATTERN_1)
STATEMENTS
;;
PATTERN_2)
STATEMENTS
;;
PATTERN_N)
STATEMENTS
;;
*)
STATEMENTS
;;
esac
- Jeder
case
Anweisung beginnt mit demcase
Schlüsselwort, gefolgt vom case-Ausdruck und demin
Stichwort. Die Anweisung endet mit demesac
Schlüsselwort. - Sie können mehrere Muster verwenden, die durch
|
getrennt sind Operator. Der)
Operator beendet eine Musterliste. - Ein Muster kann Sonderzeichen enthalten.
- Ein Muster und die zugehörigen Befehle werden als Klausel bezeichnet.
- Jede Klausel muss mit
;;
abgeschlossen werden . - Die Befehle, die dem ersten Muster entsprechen, das dem Ausdruck entspricht, werden ausgeführt.
- Es ist üblich, das Platzhalter-Sternchen-Symbol (
*
) als endgültiges Muster zum Definieren des Standardfalls. Dieses Muster wird immer übereinstimmen. - Wenn kein Muster gefunden wird, ist der Rückgabestatus Null. Andernfalls ist der Rückgabestatus der Ausgangsstatus der ausgeführten Befehle.
Case-Statement-Beispiel #
Hier ist ein Beispiel mit dem case
Anweisung in einem Bash-Skript, das die offizielle Sprache eines bestimmten Landes ausgibt:
#!/bin/bash
echo -n "Enter the name of a country: "
read COUNTRY
echo -n "The official language of $COUNTRY is "
case $COUNTRY in
Lithuania)
echo -n "Lithuanian"
;;
Romania | Moldova)
echo -n "Romanian"
;;
Italy | "San Marino" | Switzerland | "Vatican City")
echo -n "Italian"
;;
*)
echo -n "unknown"
;;
esac
Speichern Sie das benutzerdefinierte Skript als Datei und führen Sie es über die Befehlszeile aus.
bash languages.sh
Das Skript fordert Sie auf, ein Land einzugeben. Wenn Sie beispielsweise „Litauen“ eingeben, stimmt es mit dem ersten Muster und dem echo
überein Befehl in dieser Klausel wird ausgeführt.
Das Skript gibt die folgende Ausgabe aus:
Enter the name of a country: Lithuania
The official language of Lithuania is Lithuanian
Wenn Sie ein Land eingeben, das mit keinem anderen Muster als dem Standard-Wildcard-Sternchen-Symbol übereinstimmt, sagen wir Argentinien, führt das Skript das echo
aus Befehl innerhalb der Standardklausel.
Enter the name of a country: Argentina
The official language of Argentina is unknown
Schlussfolgerung #
Inzwischen sollten Sie ein gutes Verständnis dafür haben, wie man bash case
schreibt Aussagen. Sie werden häufig verwendet, um Parameter von der Befehlszeile aus an ein Shell-Skript zu übergeben. Beispielsweise verwenden die Init-Skripte case
Anweisungen zum Starten, Stoppen oder Neustarten von Diensten.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.