Der Bash-Case-Befehl wird verwendet, um durch den Vergleich von Daten wie der if-Anweisung geeignete Maßnahmen zu ergreifen. Es funktioniert wie eine Switch-Case-Anweisung anderer Standard-Programmiersprachen. Dieser Befehl beginnt mit der 'case'-Anweisung und endet mit der 'esac'-Anweisung. Im case-Befehl wird keine break-Anweisung verwendet und eine doppelte Klammer (;;) ist erforderlich, um die Anweisung(en) für eine bestimmte Übereinstimmung zu erwähnen. Dieser Befehl erweitert den Ausdruck und versucht, mit dem angegebenen Muster abzugleichen, und der Exit-Statuscode dieses Befehls ist Null, wenn keine Übereinstimmung gefunden wird. Einige gängige Beispiele für case-Anweisungen werden in diesem Tutorial gezeigt.
Beispiel-1: einfache Fallaussage
Ein einzelner bedingter Ausdruck wird im Befehl bash case verwendet, um die Ausgabe basierend auf der übereinstimmenden Bedingung zu generieren. Erstellen Sie eine Bash-Datei mit dem Namen Fall 1.Sch mit dem folgenden Bash-Skript. Das Skript nimmt einen Zeichenfolgenwert und vergleicht den Wert mit jedem Ausdruck. Das folgende Skript generiert „Kein Eintrag gefunden“, wenn kein passender Ausdruck vorhanden ist,
Fall 1.Sch
echo "Geben Sie Ihren Namen ein"
Namen lesen
Fall $name in
Jamin)
echo "Ihre Lieblingsfarbe ist Blau" ;;
Fahmida)
echo "Dein Lieblingsgetränk ist Sprite" ;;
*)
echo "Kein Eintrag gefunden" ;;
esac
Führen Sie das Skript aus.
$ bash Fall1.SchAusgabe:
Die Datei wird hier mit gültiger und ungültiger Eingabe ausgeführt, um die Ausgabe zu testen.
Beispiel-2: multiple case-Anweisung mit Pipe
Im Bash-Skript können mehrere case-Ausdrücke angewendet werden, um verschiedene Arten von Anweisungen auszuführen. Das Pipe-Symbol ( | ) kann verwendet werden, um die mehreren Ausdrücke zuzuweisen. Erstellen Sie eine Bash-Datei mit dem Namen Fall2.Sch mit folgendem Skript. Wenn nach dem Ausführen des Skripts der Eingabewert mit einem Ausdruck übereinstimmt, wird der entsprechende Textwert gedruckt.
Fall2.Sch
echo "Geben Sie Ihre ID-Nummer ein"
ID lesen
Fall $ID in
65341)
echo "Ihre Position ist 1." ;;
97564|88453)
echo "Ihre Position ist 2." ;;
45087)
echo "Ihre Position ist 3." ;;
*)
echo "Ungültige ID" ;;
esac
Führen Sie das Skript aus .
$ bash Fall2.SchAusgabe:
Dieses Skript funktioniert auch wie das vorherige Beispiel. Der einzige Unterschied besteht darin, dass die Mehrfachausdruckswerte für eine einzelne Ausgabe getestet werden.
Beispiel-3: So beenden Sie den case/esac-Anweisungsblock
Wenn der Befehl bash case in einer Endlosschleife verwendet wird, muss der Befehl exit zum Beenden der Schleife verwendet werden. Dieses Beispiel zeigt, wie diese Aufgabentypen ausgeführt werden können. Erstellen Sie eine Textdatei mit dem Namen Fall3.Sch mit folgendem Skript. Dieses Skript nimmt eine beliebige Zahl von 1 bis 3 als Eingabe an. Wenn die Eingabe 1 ist, werden zwei Zahlen addiert, wenn die Eingabe 2 ist, werden zwei Zahlen subtrahiert und wenn die Eingabezahl 3 ist, werden zwei Zahlen multipliziert. Die Ausgabe ist „Ungültige Eingabe“, wenn die Eingabenummer größer als 3 oder kleiner als 1 oder leer ist.
Fall3.Sch
#!/bin/bash
während(wahr)
tun
a=8
b=4
((x=$a+$b))
((y=$a-$b))
((z=$a*$b))
echo "Typ 1 oder 2 oder 3"
lesen und
Fall $ans in
1) echo "Die Summe von $a und $b ist $x & exit" ;;
2) echo "Die Subtraktion von $a und $b ist $y & exit" ;;
3) echo "Die Multiplikation von $a und $b ist $z & exit" ;;
*) echo "Ungültige Eingabe"
esac
getan
Führen Sie das Skript aus.
$ bash Fall3.SchAusgabe:
Das Skript wird so lange ausgeführt, bis Strg+C gedrückt wird.
Beispiel-4: Überprüfen des leeren Befehlszeilenargumentwerts
Die Befehlszeilenargumentvariable kann in der bash case-Anweisung verwendet werden used. Erstellen Sie eine Datei mit dem Namen Fall4.Sch mit dem folgenden Skript, das den Wert der zweiten Argumentvariablen überprüft.
#!/bin/bashFall "$2" in
"Ubuntu")
echo "Das zweite Argument ist $2."
;;
"CentOS")
echo "Das zweite Argument ist $2."
;;
"")
echo "Das zweite Argument ist leer."
;;
esac
Führen Sie das Skript aus.
$ bash Fall4.SchAusgabe:
Hier wird das Skript zum ersten Mal ohne einen zweiten Befehlszeilenargumentwert ausgeführt und die Ausgabe zeigt „Das zweite Argument ist leer“. Wenn das Skript zum zweiten Mal mit einem zweiten Befehlszeilenargumentwert ausgeführt wird, wird keine Ausgabe angezeigt.
Beispiel-5: Multiple Case-Anweisung basierend auf Benutzereingaben
Erstellen Sie eine Bash-Datei mit dem Namen Fall5.Sch mit folgendem Skript. Das Skript nimmt den Monatsnamen als Benutzereingabe an. Wenn der Monatsname mit einem beliebigen Fallwert übereinstimmt, wird der Variablen Nachricht eine bestimmte Textnachricht zugewiesen. Der Eingabewert muss der vollständige Monatsname oder der dreistellige Monatsname sein.
Fall5.Sch
#!/bin/bashecho "Geben Sie den Namen eines Monats ein"
Monat lesen
Fall $Monat in
Januar|Januar*)
Message=" Der 21. Februar ist unser internationaler Muttertag."
;;
Februar|Feb*)
Message=" Der 21. Februar ist unser internationaler Muttertag."
;;
März|März*)
Message="9. März ist der Weltnierentag."
;;
April|April*)
Message="Der aktuelle Monat ist nicht Februar"
;;
Mai|Mai*)
Message="Der aktuelle Monat ist Februar"
;;
Juni|Juni*)
Message="Der aktuelle Monat ist Februar"
;;
*)
Message="Keine passenden Informationen gefunden"
;;
esac
echo $Nachricht
Führen Sie das Skript aus.
$ Bash-Fall5.SchAusgabe:
Für den Eingangswert erscheint die folgende Ausgabe, 'March' oder 'Mar'.
Beispiel-6: Variable in der Bash-Case-Anweisung prüfen
Jeder String-Wert kann gedruckt werden, indem der Wert der Befehlszeilenargumentvariablen überprüft wird. Erstellen Sie eine Textdatei mit dem Namen Fall6.Sch mit folgendem Skript. In diesem Beispiel wird der Wert der ersten Argumentvariablen überprüft und wenn der Wert leer ist, wird eine Zeichenfolge „Ich mag Bash-Programmierung“ ausgegeben.
Fall6.Sch
#!/bin/bashFall $1 in
("") echo "Ich mag Bash-Programmierung";
esac
Führen Sie das Skript aus.
$ bash Fall6.SchAusgabe:
Dieses Skript wird mit und ohne erste Argumente ausgeführt. Es erfolgt keine Ausgabe, wenn keine Befehlszeilenargumentvariable übergeben wird.
Fazit
In diesem Artikel werden verschiedene Verwendungen des Befehls bash case gezeigt. Wenn die Leser diese Beispiele richtig üben, wird es für sie einfacher sein, viele Probleme der Bash-Programmierung zu lösen.