Bash 'wenn sonst'-Anweisung: Tutorial und Beispiele

Verwenden der if…else-Anweisung in Bash für die bedingte Codeausführung.

Bash (Bourne Again Shell) ist eine Shell-Eingabeaufforderung und Skriptsprache in GNU/Linux-Betriebssystemen. Es ist die Standard-Shell für die meisten Linux-Distributionen.

Bedingte Anweisungen sind in jeder Programmiersprache von entscheidender Bedeutung, sowohl kompiliert als auch geskriptet. Sie ermöglichen es dem Benutzer, einen Code basierend auf einer vordefinierten Bedingung auszuführen, die eine der Grundlagen der Programmierlogik ist. In diesem Artikel erfahren Sie, wie Sie die ansonsten bedingte Anweisung in Bash.

Einführung

Der ansonsten -Anweisung in der Bash ermöglicht es dem Benutzer, den Codefluss basierend auf Bedingungen zu manipulieren. Der Benutzer kann separate auszuführende Codeblöcke angeben, von denen schließlich nur einer während der Laufzeit ausgeführt wird, basierend auf der entsprechenden Bedingung, die erfüllt ist.

Beachten Sie, dass mehr als zwei Bedingungen angegeben werden können, für die elif Aussage verwendet werden kann. Der Benutzer kann mit eine beliebige Anzahl von Bedingungen angeben elif, und schließlich eine Standardbedingung mit anders Block. Sehen wir uns dies in der Syntax und den Beispielen unten genauer an.

Allgemeine Syntax

Die allgemeine Syntax für ansonsten Aussage in Bash ist:

wenn, dann  anders  fi

Hier, wenn die erfüllt, d. h. wenn 0 (Erfolg) zurückgegeben wird, wird Codeblock 1 ausgeführt. Wenn die Bedingung nicht 0 zurückgibt, d. h. einen Fehlerstatus zurückgibt, wird der Codeblock 2 ausgeführt. Der ansonsten Block endet mit a fi Erklärung.

Für mehrere Blöcke, die mehreren Bedingungen entsprechen,elif wird genutzt:

wenn, dann  dann elif  dann elif  ... ... anders  fi

Hier werden die Bedingungen der Reihe nach geprüft und der Codeblock der ersten Bedingung ausgeführt, der den Status 0 (Erfolg) zurückgibt. Z.B. wenn gibt einen Nicht-Null-Status (Fehler) zurück, dann wird geprüft. Wenn gibt Status 0 zurück, ausgeführt wird. Danach werden keine weiteren Bedingungen überprüft und die Codeausführung wird nach dem Code fortgesetzt fi Erklärung.

Wenn keine der Bedingungen den Status 0 zurückgibt, im else-Block ausgeführt wird. Beachten Sie, dass der else-Block optional ist. Wenn keine Bedingung erfüllt ist, sowie nein anders block angegeben ist, wird kein bedingter Codeblock ausgeführt und die Codeausführung wird mit dem Code fortgesetzt, nachdem der fi Anweisung, wie im Flussdiagramm unten gezeigt.

Notiere dass der dann Anweisung darf erst verwendet werden nach wenn und elif Erklärungen und nicht erforderlich nach dem anders Erklärung.

Beispiele

So führen Sie einen Codeblock aus wenn eine Variable einen bestimmten Wert hat:

x=0 if [ $x -eq 0 ] then echo "Wert von X ist 0" else echo "Wert von X ist nicht 0" fi

So prüfen Sie auf mehrere Werte:

x=2 if [ $x -eq 0 ] then echo "Wert von X ist 0" elif [ $x -eq 1 ] then echo "Wert von X ist 1" elif [ $x -eq 2 ] then echo "Wert von X ist 2" else echo "Wert von X ist nicht 0" fi

Die Bedingungen können beliebige Linux-Befehle sein. Der entsprechende Codeblock wird ausgeführt, wenn der Befehl erfolgreich ausgeführt wird.

if npm -v then echo "NPM im System vorhanden" else sudo apt install npm fi

Im obigen Beispiel, da npm wurde nicht im System installiert, der Befehl npm -v hat einen Nicht-Null-Status zurückgegeben. Daher ging die Codeausführung in die anders block, wo wir npm mit installieren geeignet Paket-Manager. Wie wir sehen, forderte es mich auf, das Passwort einzugeben und begann mit der Installation von npm.

Wir können auch einen anderen verschachteln ansonsten innen blockieren an wenn, anders oder elif Block:

x=0 y=1 if [ $x -eq 0 ] then echo "X ist 0" if [ $y -eq 1 ] then echo "Y ist 1" else echo "Y ist nicht 1" fi else echo "X is nicht 0" fi

Dies ist nützlich, wenn ein separater Satz von Bedingungen überprüft werden soll, sobald eine Anfangsbedingung erfüllt ist.

Der folgende Code versucht beispielsweise, eine Webserver-Software zu installieren:

if nginx -v dann echo "NGINX ist bereits installiert." Sonst, wenn sudo apt nginx installiert, dann echo "NGINX-Installation erfolgreich." elif sudo apt install apache2, dann echo "APACHE2-Installation erfolgreich." else echo "Es kann keine Websoftware installiert werden." fi

Der Code prüft zunächst, ob Nginx bereits im System installiert ist. Wenn dies der Fall ist, wird nur eine Nachricht angezeigt und beendet. Wenn dies nicht der Fall ist, versucht es, Nginx zu installieren.

Wenn Nginx aus irgendeinem Grund nicht aus dem Paket im System installiert werden konnte, versucht es, Apache2 zu installieren. Wenn sogar Apache2 während der Installation einen Fehler ausgibt, wird es beendet und eine Meldung angezeigt, dass keine Software installiert werden konnte.

Auf ähnliche Weise kann ein verschachtelter Block innerhalb eines elif auch blockieren.

Ausführung ansonsten: Skripte und Befehlszeile

Ähnlich wie bei jedem Bash-Code ist der ansonsten -Anweisung kann direkt in der Bash-Shell oder aus einer ausführbaren Shell-Skriptdatei verwendet werden. Sobald der Bash-Interpreter ein . findet wenn, anders oder elif -Anweisung setzt es die Shell fort, damit der Benutzer den Codeblock eingeben kann.

Der Benutzer kann diesen Code auch in einer Skriptdatei speichern und die Skriptdatei ausführen.

Der #!/bin/bash at the start gibt den Interpreter an, der bei der Ausführung der Datei verwendet werden soll. Obwohl Bash heutzutage die am häufigsten verwendete Shell ist, bevorzugen einige Benutzer Shells wie zsh, die anstelle von bash am Anfang dieser Datei angegeben werden sollten.

Um Ausführungsberechtigungen für diese Datei zu erteilen, führen Sie Folgendes aus:

chmod +x test.sh

Um die Datei schließlich auszuführen, führen Sie Folgendes aus:

./test.sh

Fazit

Ähnlich wie bei jeder Programmiersprache, ansonsten -Anweisung ist ein grundlegendes Merkmal von Bash. Das Erlernen ihrer Verwendung ist beim Schreiben grundlegender und fortgeschrittener Skripte ein langer Weg.