Bash Der if-Block

Aus xinux.net
Zur Navigation springen Zur Suche springen

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.

Konstruktion

if programm
then 
  anweisung1
else
  anweisung2
fi
  • Der if-Block verzweigt in Abhängigkeit des Returncodes des Programmes das ausgeführt wird.
  • Ist der nReturncode gleich null, wird Anweisung1 ausgeführt; ist der Returncode ungleich null, wird Anweisung2 ausgeführt.

Nassi-Shneiderman-Diagram

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

Aufgaben