Linux Bash: if then, if then else, if then elif then (Beispiele)

Hier finden Sie Beispiele und Erklärung für die Konstrukte if then, if then else, if then elif then, welche in Linux Bash verwendet werden können.

if then Beispiel

Das if-then Konstrukt ist sehr einfach aufgebaut:
Syntax:
if Bedingung
    then
        Befehl
fi
Beispiel:
if grep 'warning' /var/log/syslog
    then
        echo 'Achtung! Warning kommt in syslog vor'
fi

Erklärung:
Wenn der Befehl grep das Wort 'warning' in /var/log/syslog findet, liefert dieser Befehl als Ergebnis den Wert 'true'  (=die Bedingug wurde erfüllt), dann wird der Befehl echo 'Achtung! Warning kommt in syslog vor' ausgeführt.
Findet der Befehl grep das Wort 'warning' in /var/log/syslog nicht, wird in diesem Konstrukt kein Befehl ausgeführt.

In dem Fall erscheinen in der Ausgabe der Konsole auch alle Zeilen, in denen das Wort 'warning' vorkommt, was nicht immer gewünscht ist.
Ist es nicht gewünscht, kann der Befehl wie folgt optimiert werden:
if grep 'warning' /var/log/syslog 1> /dev/null
    then
        echo 'Achtung! Warning kommt in syslog vor'
fi
Dadurch wird die Ausgabe in der Konsole von diesen Zeilen nicht angezeigt.
Wünschen Sie, dass betroffene Zeilen in einer Logdatei gespeichert werden, können Sie diese in eine Logdatei umleiten (Beispiel: 1> /root/logs.txt)


if then else Beispiel

Etwas umfangreicher ist das if-then-else Konstrukt:
if grep 'warning' /var/log/syslog
    then
        echo 'Achtung! Warning kommt in syslog vor'
    else
        echo 'Alles OK, warning kommt in syslog nicht vor'
fi

Erklärung:
Hier wird zusätzlich der Befehl echo 'Alles OK, warning kommt in syslog nicht vor' ausgeführt, wenn die Bedienung nicht erfüllt wird.


if then elif then Beispiel

Das Konstrukt if-then-elif-then ermöglicht die Prüfung von der zweiten Bedingung, wenn es bei der ersten Bedingung 'false' geliefert wird.
Syntax:
if Bedingung1
    then
        Befehl1
elif Bedingung2
    then
        Befehl2
fi

Erklärung:
Wenn es bei der Bedingung1 'true' geliefert wird, wird Befehl1 ausgeführt.
Wenn es aber bei der Bedienung1 'false' geliefert wird (d.h. Bedingung wurde nicht erfüllt), erfolgt die Prüfung auf Bedingung2

Beispiel:
if grep 'warning' /var/log/syslog
    then
        echo 'Achtung! Warning kommt in syslog vor'
elif grep 'error' /var/log/syslog
    then
        echo 'Achtung! Error kommt in syslog vor'
fi

bash if then - mehrere Bedingungen

Beispiel:
if [grep 'warning' /var/log/syslog] && [grep 'error' /var/log/syslog]
    then
        echo 'Achtung! Warning und Error kommen in syslog vor'
fi

Erklärung:
Hier wird der echo Befehl nur dann ausgeführt, wenn Beide Bedingungen den Wer 'true' liefern.
Statt && kann man auch || verwenden. In diesem Fall wird der echo Befehl auch dann ausgeführt, wenn es bei einer der Bedingungen der Wert 'true' geliefert wird.


Vergleich von Zahlen und Zeichen (String).

Mit oben genannten Konstrukten können auch Zahlen und Zeilen verglichen werden.

Beispiel mit Zahlen:
if [ 8 -gt 1 ]
    then
        echo "8 ist größer als 1"
fi

Mit -gt wird es geprüft, ob die erste Zahl größer als die zweite ist (also 8 > 1)
Anstatt von den statischen Zahlen verwendet man natürlich in produktiven Scripten die Variablen ( z.B. um geprüfte/eingegebene Zahlen zu vergleichen)

Beispiel mit Zeichen:
DeinUsername="David"
if [ $DeinUsername = 'Thomas' ]
    then
        echo "Dein Username ist Thomas"
    else
        echo 'Dein Username lautet anders als Thomas'
fi

Es gibt viele andere Operatoren, mit welchen ganz unterschiedliche Bedingungen gebildet werden können. Einige von den Operatoren finden Sie hier:
https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_für_Anfänger/#Das-Test-Kommando

Kommentar veröffentlichen

Bitte beachten Sie beim Verwenden vom Kommentarsystem die Datenschutzerklärung von www.itslot.de