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

Bash if..else-Anweisung

Dieses Tutorial führt Sie durch die Grundlagen von Bash if Statement und zeigen Ihnen, wie Sie es in Ihren Shell-Skripten verwenden.

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

if Anweisung #

Bash if Konditionale können verschiedene Formen haben. Das grundlegendste if Die Anweisung hat folgende Form:

if TEST-COMMAND
then
  STATEMENTS
fi

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

Wenn der TEST-COMMAND ergibt True , die STATEMENTS hingerichtet wird. Wenn TEST-COMMAND gibt False zurück , nichts passiert; die STATEMENTS ignoriert werden.

Im Allgemeinen empfiehlt es sich, Ihren Code immer einzurücken und Codeblöcke durch Leerzeilen zu trennen. Die meisten Leute entscheiden sich entweder für einen 4-Leerzeichen- oder einen 2-Leerzeichen-Einzug. Einrückungen und Leerzeilen machen Ihren Code lesbarer und übersichtlicher.

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 [[ $VAR -gt 10 ]]
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 Zahl einzugeben. Wenn Sie beispielsweise 15 eingeben, wird der test Der Befehl wird als true ausgewertet weil 15 größer als 10 ist, und das echo Befehl innerhalb des then Klausel wird ausgeführt.

The variable is greater than 10.

if..else Anweisung #

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

if TEST-COMMAND
then
  STATEMENTS1
else
  STATEMENTS2
fi

Wenn der TEST-COMMAND ergibt True , die STATEMENTS1 wird durchgeführt. Andernfalls, falls TEST-COMMAND gibt False zurück , die STATEMENTS2 wird durchgeführt. Sie können nur einen else haben Klausel in der Anweisung.

Lassen Sie uns ein else hinzufügen -Klausel zum vorherigen Beispielskript:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
else
  echo "The variable is equal or less than 10."
fi

Wenn Sie den Code ausführen und eine Zahl eingeben, gibt das Skript eine andere Meldung aus, je nachdem, ob die Zahl größer oder kleiner/gleich 10 ist.

if..elif..else Anweisung #

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

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

Wenn der TEST-COMMAND1 ergibt True , die STATEMENTS1 wird durchgeführt. Wenn der TEST-COMMAND2 ergibt True , die STATEMENTS2 wird durchgeführt. Wenn keiner der Testbefehle zu True ausgewertet wird , die STATEMENTS2 wird ausgeführt.

Sie können einen oder mehrere elif haben Klauseln in der Erklärung. Das 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 bewegt sich zum Ende von if Aussagen.

Lassen Sie uns ein elif hinzufügen Klausel zum vorherigen Skript:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
elif [[ $VAR -eq 10 ]]
then
  echo "The variable is equal to 10."
else
  echo "The variable is less than 10."
fi

Verschachteltes if Anweisungen #

Bash ermöglicht es Ihnen, if zu verschachteln Anweisungen innerhalb von if Aussagen. Sie können mehrere if platzieren Anweisungen innerhalb eines anderen if Aussage.

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

#!/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 [[ $VAR1 -ge $VAR2 ]]
then
  if [[ $VAR1 -ge $VAR3 ]]
  then
    echo "$VAR1 is the largest number."
  else
    echo "$VAR3 is the largest number."
  fi
else
  if [[ $VAR2 -ge $VAR3 ]]
  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.
Im Allgemeinen ist es effizienter, den case zu verwenden Anweisung statt verschachteltem if Aussagen.

Mehrere Bedingungen #

Das logische OR und AND Operatoren erlauben Ihnen, mehrere Bedingungen in if zu verwenden Aussagen.

Hier ist eine andere Version des Skripts, um die größte Zahl unter den drei Zahlen zu drucken. In dieser Version anstelle des verschachtelten if -Anweisungen verwenden wir das logische 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 [[ $VAR1 -ge $VAR2 ]] && [[ $VAR1 -ge $VAR3 ]]
then
  echo "$VAR1 is the largest number."
elif [[ $VAR2 -ge $VAR1 ]] && [[ $VAR2 -ge $VAR3 ]]
then
  echo "$VAR2 is the largest number."
else
  echo "$VAR3 is the largest number."
fi

Operatoren testen #

In Bash der test Der Befehl nimmt eine der folgenden Syntaxformen an:

test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]

Um das Skript portabel zu machen, verwenden Sie lieber den alten Test [ Befehl, der auf allen POSIX-Shells verfügbar ist. Die neue aktualisierte Version des test Befehl [[ (doppelte Klammern) wird auf den meisten modernen Systemen unterstützt, die Bash, Zsh und Ksh als Standard-Shell verwenden.

Um den Testausdruck zu negieren, verwenden Sie das logische NOT (! ) Operator. Verwenden Sie beim Vergleichen von Zeichenfolgen immer einfache oder doppelte Anführungszeichen, um Probleme mit Worttrennung und Globbing zu vermeiden.

Nachfolgend 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 VAR ist leer.
  • STRING1 = STRING2 - Wahr, wenn STRING1 und STRING2 sind gleich.
  • STRING1 != STRING2 - Wahr, wenn STRING1 und STRING2 sind nicht gleich.
  • INTEGER1 -eq INTEGER2 - Wahr, wenn INTEGER1 und INTEGER2 sind gleich.
  • INTEGER1 -gt INTEGER2 - Wahr, wenn INTEGER1 ist größer als INTEGER2 .
  • INTEGER1 -lt INTEGER2 - Wahr, wenn INTEGER1 ist kleiner als INTEGER2 .
  • INTEGER1 -ge INTEGER2 - Wahr, wenn INTEGER1 ist gleich oder größer als INTEGER2.
  • INTEGER1 -le INTEGER2 - Wahr, wenn INTEGER1 gleich oder kleiner als INTEGER2 ist .
  • -h FILE - Wahr, wenn die FILE existiert und ist ein symbolischer Link.
  • -r FILE - Wahr, wenn die FILE existiert und ist lesbar.
  • -w FILE - Wahr, wenn die FILE existiert und ist beschreibbar.
  • -x FILE - Wahr, wenn die FILE existiert und ist ausführbar.
  • -d FILE - Wahr, wenn die FILE existiert und ist ein Verzeichnis.
  • -e FILE - Wahr, wenn die FILE existiert und ist eine Datei, unabhängig vom Typ (Knoten, Verzeichnis, Socket usw.).
  • -f FILE - Wahr, wenn die FILE existiert und ist eine normale Datei (kein Verzeichnis oder Gerät).

Schlussfolgerung #

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

Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.


Linux
  1. So verwenden Sie die Bedingungsanweisung if else in Bash-Skript

  2. Bash-If-Else-Anweisung mit Beispielen

  3. 4 Beispiele für Awk-If-Anweisungen ( if, if else, if else if, :? )

  4. 4 Beispiele für Bash-If-Anweisungen ( If then fi, If then else fi, If elif else fi, Nested if )

  5. 5 Beispiele für Bash-Case-Anweisungen

Bash Shebang

Python if..else-Anweisung

Bash-Skripting – Case-Statement

So arbeiten Sie mit Case-Anweisungen in Bash-Skripten

Bash If Else Syntax mit Beispielen

Bash If Else und andere bedingte Anweisungen verstehen