Bedingte Tests in bash: wenn, dann, anders, elif

Inhalt

Bash-Shell

Programmieren in bash kann manchmal Spaß machen. Wissen Sie, wie Sie Ihr Wenn von Ihrem Sonst-Wenn oder Elif trennen können, wie sie in bash genannt werden, es kann auch Spaß machen. Finden Sie heraus, wie Sie Ihre Bash-Bedingungen richtig machen.

Bash-Bedingungen: wenn, dann, anders, elif

So gut wie alle Programmiersprachen, es gibt bedingungen – bedingte Anweisungen, die es ermöglichen, eine Reihe von Situationen zu testen. In den meisten Programmiersprachen, ein grundlegendes if Die Deklaration würde es ermöglichen, den Zustand oder Wert einer bestimmten Programmiervariablen zu testen. Als Beispiel, Sie könnten testen, ob eine Variable leer ist oder nicht.

Weitere Informationen zu Bash-Variablen, Vielleicht möchten Sie unseren Beitrag Bash Functions and Local Variables ansehen.

Bash ist eine vollwertige Linux-Shell und komplette Programmiersprache. Es enthält auch viele Erweiterungen der gebräuchlichsten bedingten Anweisungen innerhalb seiner Programmiersprache. / Skripterstellung. Als Beispiel, man kann das Vorhandensein von Dateien testen, um zu sehen, ob a grep -q Aussage war erfolgreich und so weiter.

Zur selben Zeit, man kann komplexe bedingte Aussagen spezifizieren, und sogar Unterschichten innerhalb der if etc. bedingte Anweisung richtig. Dadurch ist Bash sehr gut manipulierbar / Big-Data-Manipulation, Textanalyse und viele andere DevOps-ähnliche Aufgaben.

Dieser Beitrag konzentriert sich hauptsächlich darauf, die richtigen Bedingungen zu erhalten, mit if...then, else, und elif Aussagen. Ein zukünftiger Beitrag wird komplexere Testbedingungen diskutieren, Verwenden von Unterebenen in bedingten Anweisungen, etc.

Bash-Bedingungstest: und … dann … Sein

Das Schreiben einer bedingten Anweisung in Bash ist einfach und unkompliziert. Sie können sie sogar direkt in die Bash-Befehlszeile schreiben, ohne ein Skript zu verwenden:

wenn [ "1" == "1" ]; dann echo 'wahr'; Sein

Einfaches if-Beispiel in bash

Das Ergebnis ist sicher, Was 1 Streichhölzer 1. Beachten Sie, dass die Möglichkeit zum Testen der Gleichheit zwischen Elementen darin besteht, zu verwenden == und nein =. Dies ist in vielen Sprachen der Fall und, häufig, erfolgt zur Vermeidung oder eindeutigen Trennung von der "Aufgabe" (Mit anderen Worten, Bestimme eine Variable bei einem gegebenen Wert).

Beachten Sie auch, dass wir jede Bedingung beenden if Erklärung mit Kündigung fi (die Rückseite von und) Stellungnahme. Dies ermöglicht es uns, danach mehrere Zeilen anzugeben. then -Klausel vor dem Beenden der späterer Abschnitt.

Bash-Bedingungstest: andere Und Variablen

Lassen Sie uns das in einem kleinen Skript zusammenfassen, Fügen wir eine else und fügen Sie einige Variablenprüfungen hinzu.

Definieren test.sh wie folgt:

#!/bin/bash

VAR1=1
VAR2=1

if [ "${VAR1}" == "${VAR2}" ]; then 
  echo 'true'
else 
  echo 'false'
fi

Anschließend, Wir machen dieses kleine Skript durch Ausgabe ausführbar chmod +x test.sh das das flag der ausführbaren Datei für die test.sh Text.

Beispiel für if im Skript mit Variablen und einer else-Klausel

Innerhalb des Skripts haben wir VAR1 und VAR2 zum Wert von 1. Nächste, Wir geben eine if-Anweisung heraus, die die beiden Variablen vergleicht, und wir hallen true Wenn der Vergleich gültig ist, und false Wenn der Vergleich fehlgeschlagen ist. Das Ergebnis ist eine korrekte true Produktion.

Bash-Bedingungstest: und Erweiterte Verschachtelung und Überprüfung

Wir können das letzte Beispiel etwas erweitern und die Ungleichheit mit != Anstatt von ==, Fügen Sie verschachtelte Schleifen hinzu und verwenden Sie gleichzeitig einige native erweiterte Bash-Variablenprüfungen.

Definieren test2.sh wie folgt:

#!/bin/bash

VAR1="${1}"
VAR2="${2}"

wenn [ ! -Mit "${VAR1}" -ein ! -Mit "${VAR2}" ]; then
  if [ "${VAR1}" != "${VAR2}" ]; then 
    echo 'true'
  else 
    echo 'false'
  fi
else
  echo "Behaupten: Entweder VAR1 (Wert: '${VAR1}'), oder VAR2 (Wert: '${VAR2}'), oder beides, sind leer!"
Sein

In diesem Skript, Wir ersetzen unsere codierten Werte von 1 für beide VAR1 und VAR2 mit zwei speziellen Variablen, nämlich ${1} und ${2}, die repräsentieren die erste und zweite Option / Parameter, von der Befehlszeile an das Skript übergeben. Wir machen unser Skript wieder ausführbar und führen es mit verschiedenen Kombinationen falscher Alternativen aus.

Eine komplexere Ungleichung if-Anweisung, die auch Skriptvariablen testet

das -z der Code bedeutet prüfen, ob ein Parameter leer ist oder nicht. Wir bestreiten das Ergebnis (Mit anderen Worten, aus ja wird nein und er wird nicht zu ja, oder eher / besser, wahr wird falsch und falsch wird wahr) durch die Verwendung eines Ausrufezeichens (!) vor dem -z prüfen. Später verwenden wir auch a UND Klausel (Mit anderen Worten, beide seiten der UND Klausel muss als wahr bewiesen werden).

Mit anderen Worten, wie du das lesen könntest if [ ! -z "${VAR1}" -a ! -z "${VAR2}" ]; die Zeile in natürlicher Sprache ist Sowohl VAR1 als auch VAR2 dürfen nicht leer sein. Wir können sehen, dass unsere Variablen durch diese bedingte Anweisung korrekt überprüft werden, da wir jedes Mal versuchen, nur eine Variable zu übergeben, oder zwei Variablen, von denen eine leer ist, das Programm springt zum else Klausel, die über die falsche Verwendung unserer Skriptoption informiert.

Abschließend, im ersten if bedingte Anweisung, wir haben ein Gymnasium (Computerjargon: verschachtelt) Konditionalsatz. Diese Aussage verifiziert unsere Ungleichung mit Es ist nicht das Gleiche (!=). effektiv, wenn wir zwei verschiedene Werte übergeben, nämlich 1 und 2 für das Skript, Das Ergebnis ist wahr: Diese Zahlen sind ungleich.

Bash-Bedingungstest: elif

Wenn Sie mit der Entwicklung komplexerer und tief verschachtelter Anweisungen in Bash beginnen, Sie werden bald feststellen, dass es einen Fall gibt, in dem Sie sich immer tiefer in den verschachtelten Code verzweigen., und der Code beginnt aufgrund der mehreren Tiefenebenen komplexer auszusehen. Häufig, auch wenn nicht immer, Sie können eine elif Erklärung in solchen Fällen. Als Beispiel:

#!/bin/bash

if [ "${1}" -lt 2 ]; then
  echo "weniger als 2"
else
  if [ "${1}" -lt 4 ]; then
    echo "weniger als 4"
  else
    if [ "${1}" -lt 6 ]; then
      echo "weniger als 6"
    fi
  fi
fi

if [ "${1}" -lt 2 ]; then
  echo "weniger als 2"
elif [ "${1}" -lt 4 ]; then
  echo "weniger als 4"
elif [ "${1}" -lt 6 ]; then
  echo "weniger als 6"
Sein

Nachdem Sie dieses Skript als test3.sh definiert haben, wir machen es ausführbar und führen es aus.

Beispiel für eine bedingte Elif-Anweisung mit zwei verschiedenen Implementierungen

Die beiden Codeblöcke machen genau das Gleiche: Sie prüfen, ob der Wert als erste Option an das Skript übergeben wurde (1, 3 und 5 bzw) ist weniger als (-lt) Die Werte 2, 4 und 6 der Reihe nach. Wir sehen, dass die beiden Blöcke genau gleich funktionieren.

Trotz dieses, der zweite Codeblock, das verwendet die Verwendung von elif Aussagen (was auch gelesen werden kann als aber Aussagen) Anstatt von Plus … und Bedingte Anweisungsblöcke. Der zweite Codeblock ist nicht nur kürzer, es ist auch sauberer, klarer und angenehmer für das Auge. Beachten Sie, dass Sie auch kombinieren können else und elif Aussagen in Kombination, verschachtelter Weg, etc.

Fazit

Bash-Code schreiben ist, war und wird wohl noch lange eine schöne Übung für viele sein. Das Erstellen gut ausgearbeiteter bedingter Anweisungen ist ein wesentlicher und gemeinsamer Bestandteil davon.. In diesem kurzen Tutorial, wir analysieren if, then, else, elif und fi Aussagen. Verwenden der verschiedenen bedingten Anweisungen, Sie werden in der Lage sein, exzellenten und sauberen Code zu erstellen. Genießen!

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.