Bash Der if-Block
Version vom 25. Mai 2023, 17:28 Uhr von Thomas.will (Diskussion | Beiträge)
Was ist das?
- Das "if"-Statement in Bash ermöglicht die Ausführung von Code basierend auf einer Bedingung. Es überprüft den Wahrheitswert einer Bedingung und führt den Codeblock unterhalb von "if" aus, wenn die Bedingung erfüllt ist.
- Die Syntax des "if"-Statements besteht aus dem Schlüsselwort "if", gefolgt von einer Bedingung in runden Klammern und einem abschließenden Semikolon. Der Codeblock wird durch "then" eingeleitet und durch "fi" (steht für "end if") beendet.
- Zusätzlich kann das "if"-Statement durch "else" und "elif" (eine verkürzte Form von "else if") erweitert werden, um alternative Zweige abhängig von anderen Bedingungen zu ermöglichen.
- Das "if"-Statement ist ein leistungsstarkes Konstrukt in Bash, das es ermöglicht, Code basierend auf verschiedenen Bedingungen und Szenarien zu verzweigen und so die Flexibilität und Kontrolle in Shell-Skripten zu verbessern.
Konstrukt
if programm then anweisung1 else anweisung2 fi
Der if-Block verzweigt in Abhängigkeit des Returncodes des Programmes das ausgeführt wird. Ist der Returncode gleich null, wird Anweisung1 ausgeführt; ist der Returncode ungleich null, wird Anweisung2 ausgeführt.
Der else-Zweig kann ausgelassen oder durch einen elif-Zweig ersetzt werden. Der elif-Zweig ist eine Besonderheit bei Verschachtelungen.
- cat rechnertest
#!/bin/bash
if ping -c 1 -w 1 $1 > /dev/null 2>&1
then
echo "rechner lebt"
else
echo "rechner ist tot"
fi- ./rechnertest 172.20.103.1
rechner lebt
- ./rechnertest 172.20.103.99
rechner ist tot
Variante ohne else
- cat rechnertest.spar
#!/bin/bash
if ping -c 1 -w 1 $1 > /dev/null 2>&1
then
echo "rechner lebt"
fi- ./rechnertest.spar 172.20.103.1
rechner lebt
- ./rechnertest.spar 172.20.103.99
Sonderform mit elif
- cat el
#!/bin/bash
echo -n "wie heissen Sie :"
read NAME
if test $NAME = "thomas"
then
echo "hallo meister"
elif test $NAME = "martin"
then
echo "hallo vizemeister"
else
echo "hallo wurm"
fi- ./el
wie heissen Sie :thomas hallo meister
- ./el
wie heissen Sie :martin hallo vizemeister
- ./el
wie heissen Sie :suxer hallo wurm
