Die Fallanweisung wird im Allgemeinen in Bash verwendet, wenn Sie mehrere Auswahlmöglichkeiten haben, aus denen Sie auswählen können. Wenn Sie es anstelle von verschachtelten IF-ELSE-Anweisungen verwenden, können Sie Ihre Bash-Skripte leichter lesen und pflegen.
Die Bash -Fallerklärung wurde ähnlich der Fallerklärung von JavaScript und C entworfen. Im Gegensatz zur Switch -Anweisung von C hört die Bash Case -Anweisung auf, nach anderen Übereinstimmungen zu suchen, sobald sie einen findet und die für das Muster geschriebenen Aussagen abgeschlossen haben.
In diesem Handbuch erklären wir, wie Sie die Bash -Fallanweisung mit zwei Beispielen und einigen Szenarien in Ubuntu 22 verwenden können.04.
Syntax der Fallerklärung
Wenn Sie verstehen möchten, wie die Fallanweisung verwendet wird, müssen Sie die Syntax verstehen. Es sieht aus wie das:
Fall $ variable in
Muster1)
Befehle
;;
Muster2)
Befehle
;;
Muster)
Befehle
;;
*)
Befehle
;;
ESAC
Lassen Sie es uns aufschlüsseln:
Fall $ variable in
Muster1 | Muster2)
Befehle
;;
muster3 | Muster4)
Befehle
;;
Schauen wir uns nun ein paar Beispiele an, um diese Syntax besser zu verstehen.
Feiertage in einem Monat
Für unser erstes Beispiel schreiben wir ein Skript, das einen Monat als Eingabe vom Benutzer dauert und mit einem internationalen Urlaub reagiert, der im Monat fällt. Der "Shopt -S NocasematchDer Befehl ”Ermöglicht Ihrem Skript, den Fall der Eingabe zu ignorieren und ihm unabhängig davon mit den Fällen abzustimmen.
#!/Bin/Bash
#Code, um Fallbeschränkungen zu ignorieren
Shopt -S Nocasematch
#Case -Erklärung
Echo "Bitte geben Sie den Namen eines Monats ein"
Monat lesen
Fall $ Monat in
Januar)
Echo "18. Januar ist der National Thesaurus Day"
;;
Februar)
Echo "20. Februar ist der Welttag der Welt der sozialen Gerechtigkeit"
;;
Marsch)
Echo "29. März ist ein kleiner Red Wagon Day."
;;
April)
Echo "1. April ist der internationale Kissenkampftag"
;;
*)
Echo "konnte in Ihrem angegebenen Monat keinen Urlaub finden"
ESAC
In diesem Skript nehmen wir den Namen eines Monats vom Benutzer und speichern ihn in einer Variablen mit dem Namen "Monat". Anschließend vergleichen wir die Eingabe mit einigen vorgewählten Monaten und zeigen dann den jeweiligen Urlaub an. Sie können sehen, dass der Code, wenn er in den definierten Fällen keine Übereinstimmung findet, ein Echo außerhalb der Fälle hat, um eine andere Nachricht anzuzeigen. Und danach schließen wir die Fallcodestruktur mit dem Schlüsselwort „ESAC“.
Speichern Sie die Skriptdatei und beenden Sie aus dem Nano -Editor. Führen Sie das Skript mit dem folgenden Befehl aus:
$ Bash Monat.SchSie sehen.
Die offizielle Sprache eines Landes
Schreiben wir ein Skript, das die zusammengesetzten Fälle verwendet. Lassen Sie uns für dieses Beispiel ein Skript schreiben, das ein Land nimmt und die offizielle Sprache dieses Landes druckt.
#!/Bin/Bash
#Code, um Fallbeschränkungen zu ignorieren
Shopt -S Nocasematch
#Case -Erklärung
echo "ein Land eingeben:"
Land lesen
echo "Die offizielle Sprache von $ Country ist"
Fall $ Country in
Amerika | London)
Echo "Englisch"
;;
Brasilien | Portugal | Mexiko)
Echo "Spanisch"
;;
China | Singapur | Taiwan)
Echo "Mandarin"
;;
*)
echo "unbekannt"
;;
ESAC
Fallerklärung mit Ganzzahlen
Sie können auch die Fälle erstellen, in denen Sie die Eingabe auch mit Ganzzahlen übereinstimmen müssen. Erstellen wir ein Skript.
#!/Bin/Bash
#Case -Erklärung
Echo "Geben Sie eine Nummer von 1 bis 10 ein:"
Lesen Sie num
Fall $ num in
"1" | "3" | "5" | "7" | "9")
echo "Ihre Eingabe ist eine ungerade Zahl"
;;
"2" | "4" | "6" | "8" | "10")
echo "Ihre Eingabe ist eine gleichmäßige Zahl"
;;
*)
Echo „Ihre Eingabe liegt außerhalb des erforderlichen Bereichs“
;;
ESAC
Wenn Sie dieses Skript ausführen, erhalten Sie die folgende Ausgabe:
Sie können auch mit den anderen Zahlen testen.
Fallerklärung mit für die Schleife
Sie können die Fallanweisung innerhalb der für die Schleife verwenden, wenn Sie mehrere Eingabestalte anhand Ihrer festgelegten Fälle überprüfen möchten. Veranschaulichen wir diesen Fall, indem Sie ein Skript schreiben, das alle Dateien im aktuellen Verzeichnis durchläuft und deren Dateityp anzeigt.
#!/Bin/Bash
#Für jede Datei im aktuellen Verzeichnis
für Datei in $ (LS)
Tun
#Extrahieren Sie die Dateierweiterung
Erweiterung = $ Datei ##*.
Fall "$ Extension" in
Sch)
Echo "Bash -Skriptdatei: $ Datei"
;;
png)
Echo "PNG Image Datei: $ Datei"
;;
txt)
Echo "Textdatei: $ Datei"
;;
*)
Echo "Unbekannte Datei"
;;
ESAC
Erledigt
Das Ausführen dieses Skripts durchläuft jede Datei im aktuellen Active Directory und zeigt es zusammen mit dem Dateityp an (nur die von uns angegebenen Fälle). Wie Sie sehen können, wird beim Ausführen dieses Skripts, dass wir nur eine Datei im aktuellen Verzeichnis haben, diese zusammen mit der Erweiterung angezeigt.
Abschluss
Zurück zu Ihrem älteren Code und herauszufinden, welche Zeile es tut, kann eine sehr umständliche Aufgabe sein, insbesondere wenn sie von jemand anderem geschrieben wurde. Hinzu kommt noch schwieriger. Wenn Sie die Fallanweisung in Ihren Bash -Skripten verwenden.
Wie bei den Beispielen demonstriert, können Sie es unter anderem mit Saiten, mehreren Zeichenfolgen, Ganzzahlen und für Schleifen verwenden. Sie können sogar die Exit -Codes für Ihr Programm mit Fallanweisungen verarbeiten. Es ist sehr vielseitig.
Wenn Sie mit der Fallerklärung Probleme haben, können Sie uns gerne engagieren. Wir helfen Ihnen gerne aus.