GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So verwenden Sie bedingte Anweisungen in Bash-Skripten

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.


Ubuntu
  1. Wie debuggt man ein Bash-Skript?

  2. Verwenden Sie die Erweiterung .sh oder .bash für Bash-Skripte?

  3. So teilen Sie eine Zeichenfolge in Bash-Skript auf

  4. Wie kann man Bash-Skripte in Vim hervorheben?

  5. Wie führt man ein Bash-Skript aus?

So verwenden Sie den Bash-Lesebefehl

So verwenden Sie den Echo-Befehl in Bash-Skripten unter Linux

So arbeiten Sie mit Case-Anweisungen in Bash-Skripten

So führen Sie ein Bash-Skript aus

Wie verwende ich if-else in Shell-Skripten?

Bash If Else und andere bedingte Anweisungen verstehen