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

Bash If Else Syntax mit Beispielen

Wenn Sie mit Bash und Shell-Skripten arbeiten, müssen Sie möglicherweise Bedingungen verwenden in Ihrem Skript.

Bei der Programmierung sind Bedingungen von entscheidender Bedeutung:Sie werden verwendet, um zu bestätigen, ob einige Bedingungen wahr sind oder nicht.

In diesem Tutorial konzentrieren wir uns auf eine der bedingten Anweisungen der Bash-Sprache:die Bash if else-Anweisung.

Wir werden sehen, wie Sie diese Anweisung verwenden können, um Ihre Skripte bedingt auszuführen.

Sie werden auch lernen, wie Sie verschachtelte Bash if else verwenden können Anweisungen, um komplexeren Code zu erstellen.

Bash-If-Else-Anweisung

Um eine Bash „if else“-Anweisung auszuführen, müssen Sie vier verschiedene Schlüsselwörter verwenden:if, then, else und fi :

  • wenn :stellt die Bedingung dar, die Sie prüfen möchten;
  • dann :Wenn die vorherige Bedingung wahr ist, dann führe einen bestimmten Befehl aus;
  • sonst :Wenn die vorherige Bedingung falsch ist, dann führe einen anderen Befehl aus;
  • fi :schließt die „if, then, else“-Anweisung.

Wenn Sie die „if else“-Anweisung verwenden, müssen Sie Bedingungen in einfache oder doppelte eckige Klammern einschließen

if [[ condition ]]
then
  <execute command>
else
  <execute another command>
fi

Beachten Sie, dass die „ELSE“-Anweisung optional ist , wenn Sie es weglassen, wird nichts ausgeführt, wenn die Bedingung als falsch ausgewertet wird.

Hinweis :Sie müssen die Bedingung mit einem Leerzeichen von den eckigen Klammern trennen, sonst erhalten Sie möglicherweise einen Syntaxfehler.

If-Else-Beispiele

Jetzt wissen Sie mehr über die Bash „if else“ Anweisung, sehen wir uns an, wie Sie sie in realen Beispielen verwenden können.

In diesem Abschnitt werden wir ein Skript erstellen, das eine Nachricht ausgibt, wenn es vom Root-Benutzer ausgeführt wird.

Wenn das Skript nicht vom Root-Benutzer ausgeführt wird, wird es eine andere benutzerdefinierte Nachricht schreiben.

Um zu überprüfen, ob das Skript von root ausgeführt wird, müssen wir sehen, ob die UID des Aufrufers Null ist.

#!/bin/bash

# If the user is root, its UID is zero.

if [ $UID  -eq  0 ]
then
  echo "You are root!"
else
  echo "You are not root."
fi

Wie bereits erwähnt, ist die Datei „else ”-Anweisung ist nicht obligatorisch.

Wenn wir in unserem zuvor erstellten Skript weglassen, können wir immer noch die erste „dann“-Anweisung ausführen.

#!/bin/bash

# If the user is root, its UID is zero.

if [ $UID  -eq  0 ]
then
  echo "You are root!"
fi

Was ist nun, wenn Sie Ihren Skripten zusätzliche „if“-Anweisungen hinzufügen möchten?

Bash-If-Elif-Anweisung

Die „Wenn Elif ”-Anweisung wird in Bash verwendet, um Ihren Skripten eine zusätzliche „if“-Anweisung hinzuzufügen.

Um eine Bash „if elif“-Anweisung auszuführen, müssen Sie fünf verschiedene Schlüsselwörter verwenden:if, then, elif, else und fi :

  • wenn :stellt die Bedingung dar, die Sie prüfen möchten;
  • dann :Wenn die vorherige Bedingung wahr ist, dann führe einen bestimmten Befehl aus;
  • elif :wird verwendet, um Ihrer Aussage eine zusätzliche Bedingung hinzuzufügen;
  • sonst :Wenn die vorherigen Bedingungen falsch sind, führe einen anderen Befehl aus;
  • fi :schließt die „if, elif, then“-Anweisung.
if [[ condition ]]
then
  <execute command>
elif [[ condition ]]
then
  <execute another command>
else
  <execute default command>
fi

Auch hier ist die „ELSE“-Anweisung optional, Sie können sie also weglassen, wenn Sie keine Standardanweisung benötigen.

if [[ condition ]]
then
  <execute command>
elif [[ condition ]]
then
  <execute another command>
fi

If Elif-Beispiele

In unserem vorherigen Abschnitt haben wir die „if else ”-Anweisung, um zu überprüfen, ob ein Benutzer root ist oder nicht.

In diesem Abschnitt prüfen wir, ob der Benutzer root ist oder ob der Benutzer eine UID von 1002 hat.

Wenn dies nicht der Fall ist, beenden wir das Skript und geben die Eingabeaufforderung an den Benutzer zurück.

if [[ $UID  -eq  0 ]]
then
  echo "You are root!"
elif [[ $UID  -eq 1002 ]]
then
  echo "You are user, welcome!"
else
  echo "You are not welcome here."
  exit 1;
fi

Herzlichen Glückwunsch, jetzt wissen Sie, wie Sie die Funktion „if elif“ verwenden ” Aussage!

Was nun, wenn Sie mehrere Bedingungen unter derselben „if“-Anweisung haben möchten?

Mehrere Bedingungen in If Else

Um mehrere Bedingungen in dieselbe „if else“-Anweisung zu schreiben, müssen Sie Ihre Bedingungen mit einem „AND“-Operator oder einem „OR“-Operator trennen.

# AND operator used in if else.

if [[ <condition_1> && <condition_2> ]];
then
   <execute command>
fi

# OR operator used in if else.
if [[ <condition_1> || <condition_2> ]];
then
   <execute_command>
else
   <execute_another_command>
fi

Wenn Sie beispielsweise ein Skript schreiben möchten, das überprüft, ob Sie der Root-Benutzer sind und ob Sie die richtigen Parameter angegeben haben, würden Sie Folgendes schreiben:

#!/bin/bash
 
# If the user is root and the first parameter provided is 0.
if [[ $UID -eq 0 && $1 -eq 0 ]];
then
    echo "You provided the correct parameters"
else
    echo "Wrong parameters, try again"
fi

Verschachtelte If-Else-Anweisungen

In manchen Fällen möchte man verschachtelte Bedingungen implementieren, um Bedingungen unter Vorbedingungen prüfen zu lassen.

Um verschachtelte „if else“-Anweisungen zu haben, müssen Sie einfach die „if“-Anweisung in eine andere „if“-Anweisung einfügen und Ihre verschachtelte Anweisung vor der einschließenden schließen.

if [[ condition ]]
then  
  if [[ other condition ]]
  then
    <execute command>
  else
    <execute another command>
  fi
fi

Hinweis :Stellen Sie sicher, dass Sie für jede „if“-Anweisung, die Sie öffnen, eine abschließende „fi“-Anweisung haben. Ein einzelnes „fi“ reicht einfach nicht für mehrere „if“-Anweisungen.

Beispiele für verschachtelte Anweisungen

Nehmen wir als Beispiel an, Sie möchten überprüfen, ob der Benutzer root ist, bevor Sie überprüfen, ob das erste bereitgestellte Argument null ist.

Um das zu lösen, würden Sie eine verschachtelte „if, then, else“-Anweisung auf folgende Weise schreiben:

#!/bin/bash

if [[ $UID -eq 0 ]]
then  
  if [[ $1 -eq 0 ]]
  then
    echo "You are allowed to execute this script."
  else
    echo "You should have provided 0 as the first argument."
  fi
fi

Bash-Tests

Wie Sie wahrscheinlich bemerkt haben, haben wir in den vorherigen Abschnitten den „-eq“-Operator verwendet, um einen Variablenwert mit einer Zahl zu vergleichen.

Wir haben eine einfache Gleichheitsprüfung durchgeführt, aber was ist, wenn Sie eine Ungleichheitsprüfung wünschen?

Was wäre, wenn Sie beispielsweise prüfen möchten, ob ein Wert größer als eine bestimmte Zahl ist?

Dazu benötigen Sie Bash-Tests .

Bash-Tests sind eine Reihe von Operatoren, die Sie in Ihren Bedingungsanweisungen verwenden können, um Werte miteinander zu vergleichen.

Bash-Tests können durch Ausführen des Befehls „help test“ aufgelistet werden.

$ help test

Beim Schreiben von Bash-Tests haben Sie im Wesentlichen drei Möglichkeiten:

  • Bedingungen in Dateien und Verzeichnisse schreiben :wenn sie existieren, wenn sie eine Zeichendatei, eine Gerätedatei und so weiter sind;
  • Bedingungen auf Zahlen schreiben :wenn sie einander gleich sind, wenn einer größer ist als der andere;
  • Bedingungen in Strings schreiben :wenn eine String-Variable gesetzt ist oder wenn zwei Strings gleich sind.

Bash-Dateibedingungen

Bash-Dateibedingungen werden verwendet, um zu prüfen, ob eine Datei existiert oder nicht, ob sie gelesen, geändert oder ausgeführt werden kann.

Bash-Dateitests werden in der folgenden Tabelle beschrieben:

Operator Beschreibung
-e Überprüft, ob die Datei existiert oder nicht
-d Überprüft, ob die Datei ein Verzeichnis ist
-b Überprüft, ob die Datei ein Blockgerät ist
-c Überprüft, ob die Datei ein Zeichengerät ist
f1 -nt f2 Wenn Datei f1 neuer ist als Datei f2
f1 -ot f2 Wenn Datei f1 älter ist als Datei f2
-r Datei kann gelesen werden (Leseberechtigung)
-w Datei kann geändert werden (Schreibberechtigung)
-x Datei kann ausgeführt werden (Ausführberechtigung)

Um beispielsweise zu überprüfen, ob eine Datei ein Verzeichnis ist, würden Sie das folgende Skript schreiben

#!/bin/bash

# Checking the first argument provided
if [[ -d $1 ]]
then  
  echo "This is a directory"
else
  echo "Not a directory"
fi

Bash-Zahlenbedingungen

Bash-Zahlenbedingungen werden verwendet, um zwei Zahlen zu vergleichen:wenn sie gleich sind, wenn eine größer als eine andere oder niedriger als eine andere ist.

Hier ist eine Tabelle der am häufigsten verwendeten Bash-Zahlenbedingungen:

Operator Beschreibung
num1 -eq num2 Überprüfen Sie, ob die Zahlen gleich sind
num1 -ne num2 Überprüfen Sie, ob die Zahlen nicht gleich sind
num1 -lt num2 Überprüfen, ob num1 kleiner als num2 ist
num1 -le num2 Kleiner oder gleich num2
num1 -gt num2 Größer als Zahl2
num1 -ge num2 Größer oder gleich num2

Um zum Beispiel zu prüfen, ob eine Zahl ungleich Null ist, würden Sie schreiben:

#!/bin/bash

# Checking the first argument provided
if [[ $1 -eq 0 ]]
then  
  echo "You provided zero as the first argument."
else
  echo "You should provide zero."
fi

Bash-String-Bedingungen

Bash-String-Bedingungen werden verwendet, um zu prüfen, ob zwei Strings gleich sind oder ob ein String leer ist.

Hier ist eine Tabelle der wichtigsten Bash-String-Bedingungen:

Operator Beschreibung
str1 = str2 Überprüft, ob Zeichenketten gleich sind oder nicht
str1 != str2 Überprüft, ob Zeichenfolgen unterschiedlich sind
-z str1 Überprüft, ob str1 leer ist
-n str1 Überprüft, ob str1 nicht leer ist

Um beispielsweise zu überprüfen, ob ein Benutzer einen Wert für Ihr Skript bereitgestellt hat, würden Sie schreiben:

#!/bin/bash

# Checking the first argument provided
if [[ -n $1 ]]
then  
  echo "You provided a value"
else
  echo "You should provide something"
fi

Schlussfolgerung

Im heutigen Tutorial haben Sie etwas über die Bash „If Else“-Anweisung gelernt

Sie haben anhand von Beispielen gesehen, dass Sie komplexere Anweisungen erstellen können:unter Verwendung von elif- und verschachtelten Anweisungen.

Schließlich haben Sie Bash-Tests entdeckt, was sie sind und wie sie verwendet werden, um Bedingungen in Skripten zu überprüfen.

Wenn Sie an Linux-Systemadministration interessiert sind, haben wir einen vollständigen Abschnitt auf der Website, der diesem gewidmet ist, also schauen Sie ihn sich unbedingt an!


Linux
  1. Bash-Arrays mit Beispielen

  2. Bash-If-Else-Anweisung mit Beispielen

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

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

  5. Bash/sh 'if else'-Anweisung

Bash For Loop mit praktischen Beispielen

Bash Echo-Befehl mit Beispielen in Linux erklärt

Bash-Umleitung mit Beispielen erklärt

Bash Scripting – Funktionen mit Beispielen erklärt

Bash-Scripting – Variablen mit Beispielen erklärt

Bash-Scripting – Printf-Befehl mit Beispielen erklärt