Android

Bash if..else Aussage

Bash Shell Scripting Tutorial | Shell Scripting Tutorial | Learn Shell Programming

Bash Shell Scripting Tutorial | Shell Scripting Tutorial | Learn Shell Programming

Inhaltsverzeichnis:

Anonim

Entscheidungsfindung ist eines der grundlegendsten Konzepte der Computerprogrammierung. Wie in jeder anderen Programmiersprache können if , if..else , if..elif..else und verschachtelte if Anweisungen in Bash verwendet werden, um Code basierend auf einer bestimmten Bedingung auszuführen.

In diesem Tutorial werden wir Sie durch die Grundlagen der Bash if Anweisungen führen und Ihnen zeigen, wie Sie sie in Ihren Shell-Skripten verwenden.

if Anweisung

Bash, if Bedingungen unterschiedliche Formen haben können. Die grundlegendste if Anweisung hat die folgende Form:

if TEST-COMMAND then STATEMENTS fi

Die if Anweisung beginnt mit dem Schlüsselwort if gefolgt vom bedingten Ausdruck und dem Schlüsselwort then . Die Anweisung endet mit dem Schlüsselwort fi .

Wenn der TEST-COMMAND True TEST-COMMAND , werden die STATEMENTS ausgeführt. Wenn TEST-COMMAND False zurückgibt, passiert nichts, die STATEMENTS ignoriert.

Im Allgemeinen empfiehlt es sich, den Code immer einzurücken und die Codeblöcke durch Leerzeilen zu trennen. Die meisten Benutzer verwenden Einrückungen mit 4 oder 2 Leerzeichen. Einrückungen und Leerzeilen verbessern die Lesbarkeit und Organisation Ihres Codes.

Schauen wir uns das folgende Beispielskript an, das prüft, ob eine bestimmte Zahl größer als 10 ist.

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi

Speichern Sie den Code in einer Datei und führen Sie ihn über die Befehlszeile aus:

bash test.sh

Das Skript fordert Sie auf, eine Nummer einzugeben. Wenn Sie beispielsweise 15 eingeben, wird der Testbefehl mit true ausgewertet, da 15 größer als 10 ist, und der echo Befehl in der then Klausel wird ausgeführt.

The variable is greater than 10.

if..else Aussage

Die Anweisung Bash if..else hat die folgende Form:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

Wenn der TEST-COMMAND True TEST-COMMAND , werden die STATEMENTS1 ausgeführt. Andernfalls werden die STATEMENTS2 ausgeführt, wenn TEST-COMMAND False zurückgibt. Sie können nur eine else Klausel in der Anweisung haben.

Fügen wir dem vorherigen Beispielskript eine else Klausel hinzu:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi

if..elif..else Aussage

Die Anweisung Bash if..elif..else hat die folgende Form:

if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi

Wenn der TEST-COMMAND1 True TEST-COMMAND1 , wird STATEMENTS1 ausgeführt. Wenn der TEST-COMMAND2 True TEST-COMMAND2 , werden die STATEMENTS2 ausgeführt. Wenn keiner der STATEMENTS2 True ergibt, wird STATEMENTS2 ausgeführt.

Sie können eine oder mehrere elif Klauseln in der Anweisung haben. Die else Klausel ist optional.

Die Bedingungen werden nacheinander ausgewertet. Sobald eine Bedingung True zurückgibt, werden die verbleibenden Bedingungen nicht ausgeführt und die Programmsteuerung wird an das Ende der if Anweisungen verschoben.

elif wir dem vorherigen Skript eine elif Klausel hinzu:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi

Verschachtelte if Anweisungen

Mit Bash können Sie if Anweisungen in if Anweisungen verschachteln. Sie können mehrere if Anweisungen in eine andere if Anweisung einfügen.

Das folgende Skript fordert Sie auf, drei Zahlen einzugeben, und gibt die größte Zahl unter den drei Zahlen aus.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi

So sieht die Ausgabe aus:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. Anstatt verschachtelte if Anweisungen zu verwenden, ist es normalerweise effizienter, die case-Anweisung zu verwenden.

Mehrere Bedingungen

Mit den logischen Operatoren OR und AND können Sie in den if Anweisungen mehrere Bedingungen verwenden.

Hier ist eine andere Version des Skripts, um die größte Zahl unter den drei Zahlen zu drucken. In dieser Version verwenden wir anstelle der verschachtelten if Anweisungen den logischen AND Operator ( && ).

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi

Testoperatoren

In Bash hat der test eine der folgenden Syntaxformen:

test EXPRESSION]

Verwenden Sie den logischen Operator NOT ( ! ), Um den Testausdruck zu negieren. Verwenden Sie beim Vergleichen von Zeichenfolgen immer einfache oder doppelte Anführungszeichen, um Worttrennungs- oder Globenprobleme zu vermeiden.

Im Folgenden sind einige der am häufigsten verwendeten Operatoren aufgeführt:

  • -n VAR - True, wenn die Länge von VAR größer als Null ist. -z VAR - True, wenn die VAR leer ist. STRING1 = STRING2 - True [STRING1 und STRING2 sind gleich. STRING1 != STRING2 - True STRING1 und STRING2 sind nicht gleich. INTEGER1 -eq INTEGER2 - True INTEGER1 und INTEGER2 sind gleich. INTEGER1 -gt INTEGER2 - True INTEGER1 ist größer als INTEGER2. INTEGER1 -lt INTEGER2 - True INTEGER1 ist kleiner als INTEGER2. INTEGER1 -ge INTEGER2 - True INTEGER1 ist gleich oder größer als INTEGER2. INTEGER1 -le INTEGER2 - True INTEGER1 ist gleich oder kleiner als INTEGER2. -h FILE - True, wenn die DATEI existiert und eine symbolische Verknüpfung ist. -r FILE - True, wenn die DATEI existiert und lesbar ist. -w FILE - True, wenn die DATEI existiert und beschreibbar ist. -x FILE - True, wenn die DATEI existiert und ausführbar ist. -d FILE - True, wenn die DATEI existiert und ein Verzeichnis ist. -e FILE - True, wenn die DATEI existiert und eine Datei ist, unabhängig vom Typ (Knoten, Verzeichnis, Socket usw.). -f FILE - True, wenn die DATEI existiert und eine reguläre Datei ist (kein Verzeichnis oder Gerät).

Fazit

Mit den Anweisungen if , if..else und if..elif..else können Sie den Ablauf der Ausführung des Bash-Skripts steuern, indem Sie bestimmte Bedingungen auswerten.

Bash-Terminal