Beim Bash-Skripting helfen bedingte Anweisungen dabei, zu überprüfen, ob eine bestimmte Bedingung wahr oder falsch ist. Wenn die Bedingung wahr ist, führt das Shell-Skript einen Codeblock aus, der durch das Skript festgelegt ist. Andernfalls überspringt das Skript die Ausführung des Codes und springt zur nächsten bedingten Anweisung.
Bedingte Anweisungen in Bash-Skripten beinhalten if , if-else , if-elif-else und verschachteltes if Aussagen. In diesem Leitfaden werden wir untersuchen, wie diese bedingten Anweisungen bei der Ausführung von Skripten verwendet werden.
Die if-Anweisung
In seiner einfachsten Form hat die 'if'-Anweisung die folgende Syntax.
if [[ conditional_statement ]] then command fi
Die bedingte if-Anweisung beginnt mit dem if Stichwort. Danach folgt eine bedingte Anweisung, der dann das then folgt Schlüsselwort, das dem auszuführenden Befehl vorangeht, wenn die bedingte Anweisung wahr ist.
Wenn also die condition_statement gilt, dann der Befehl wird ausgeführt. Wenn es zu False ausgewertet wird, passiert nichts und der Befehl wird vollständig ignoriert und das Skript wird beendet.
Nehmen wir ein Beispiel für ein Bash-Skript, das prüft, ob eine bereitgestellte Punktzahl größer als 80 ist.
$ vim check_score.sh
Kopieren Sie das Skript und fügen Sie es ein.
#!/bin/bash echo -n "Please Enter a score: " read score if [[ $score -gt 80 ]] then echo "You have passed the exam!" fi
Achten Sie genau auf die Einkerbung. Weisen Sie Ausführungsberechtigungen mit chmod zu Befehl wie folgt:
$ chmod +x check_score.sh
Führen Sie dann das Skript aus.
$ ./check_score.sh
Wenn Sie einen Wert eingeben, der größer als 80 ist, gilt die Bedingungsanweisung und die Echonachricht wird auf der Standardausgabe ausgegeben
Wenn der für die Punktzahl angegebene Wert jedoch weniger als 80 beträgt, wird die bedingte Anweisung als falsch ausgewertet, und es passiert nichts. Das Skript wird einfach beendet.
Die if-else-Anweisung
Im vorherigen Shell-Skript wurde nur ein Befehl ausgeführt, nachdem die bedingte Anweisung als wahr ausgewertet wurde. Wenn die Bedingung zu False ausgewertet wurde, wurde nichts gedruckt und das Skript wurde einfach beendet. Das if-else -Anweisung hilft uns, einen Befehl auszuführen, wenn eine Bedingung als falsch ausgewertet wird. Das andere Auf die Anweisung folgt dann ein Befehl oder eine Anweisung, falls die Bedingung False zurückgibt.
if [[ conditional_statement ]] then command else command fi
Lassen Sie uns das vorherige Shell-Skript ändern und ein else hinzufügen Erklärung
#!/bin/bash echo -n "Please Enter a score: " read score if [[ $score -gt 80 ]] then echo "You have passed the exam!" else echo "You have failed the exam, please try again" fi
Hier führt das Shell-Skript den Codeblock nach else aus Anweisung nur, wenn die erste Bedingung als falsch ausgewertet wird – das heißt, wenn die angegebene Punktzahl weniger als 80 beträgt.
Im ersten Fall ist die bereitgestellte Punktzahl 90 , was größer als 80 ist, und daher wird die erste Anweisung im Skript ausgeführt und das Skript beendet.
Im zweiten Fall wird jedoch 70 bereitgestellt, und da der Wert kleiner als 80 ist, überspringt das Skript die erste Anweisung, da es als falsch ausgewertet wird, und fährt mit der Ausführung der zweiten Anweisung nach else fort Aussage.
Die if-elif-else-Anweisung
Bisher haben wir nach einer Bedingung gesucht, die entweder True oder False ergibt. Die Elf (else -if )-Anweisung wird verwendet, wenn es mehrere bedingte Anweisungen gibt, die unterschiedliche Ergebnisse haben. Wenn eine Bedingung zu False ausgewertet wird, wird überprüft, ob andere Bedingungen True sind. Hier ist eine einfache Syntax für die if-elif-else-Anweisung.
if [[ conditional_statement_1 ]] then command_1 elif [[ conditional_statement_2 ]] then command_2 else command_3 fi
Betrachten Sie das folgende Skript
#!/bin/bash echo -n "Please Enter a score: " read score if [[ $score -ge 90 ]] then echo "Excellent!" elif [[ $score -ge 70 ]] then echo "Congratulations! Job well done!" elif [[ $score -ge 50 ]] then echo "Fairly done. There's more room for improvement!" else echo "Poorly done" fi
Wenn in diesem Beispiel die Punktzahl größer oder gleich 90 ist, wird die Nachricht Ausgezeichnet! gedruckt Wenn die Punktzahl jedoch weniger als 90, aber größer oder gleich 70 ist, wird Herzlichen Glückwunsch! Gut gemacht! .
Wenn die Punktzahl kleiner als 70, aber größer oder gleich 50 ist, wird die Meldung Fairly done ausgegeben. Es gibt noch Raum für Verbesserungen!
Und schließlich, wenn die Punktzahl weniger als 50 beträgt, wird Schlecht gemacht. ausgegeben
Verschachtelte if-Anweisung
Eine verschachtelte if-Anweisung besteht aus einer if-Anweisung in einer anderen if-Anweisung. Wenn eine Bedingung zutrifft, fährt das Skript mit der Prüfung der nächsten Bedingung fort. In der folgenden Demonstration nehmen wir die Eingabewerte von 3 numerischen Werten und prüfen, welcher davon der größte ist.
#!/bin/bash read -p "Please enter the value of j:" j read -p "Please enter the value of k:" k read -p "Please enter the value of l:" l if [ $j -gt $k ] then if [ $j -gt $l ] then echo "j is greatest" else echo "l is greatest" fi else if [ $k -gt $l ] then echo "k is greatest" else echo "l is greatest" fi fi
Zusammenfassung
Das war ein allgemeiner Überblick über bedingte Anweisungen in Bash-Skripten. Wie Sie gesehen haben, werden bedingte Anweisungen verwendet, um das Ergebnis eines Skripts basierend auf festgelegten bedingten Ausdrücken zu bestimmen. Hoffentlich haben Sie jetzt eine grundlegende Grundlage für bedingte Anweisungen.