4.3 Mehrfache Alternative mit elif
Es ist auch möglich, mehrere Bedingungen zu testen. Hierzu verwendet man elif. Die Syntax:
if Kommando1_erfolgreich
then
# Ja, Kommando1 war erfolgreich
# ... hier Befehle für erfolgreiches Kommando1 verwenden
elif Kommando2_erfolgreich
then
# Ja, Kommando2 war erfolgreich
# ... hier Befehle für erfolgreiches Kommando2 verwenden
else
# Nein, kein Kommando war erfolgreich
# ... hier die Befehle bei einer erfolglosen
# Kommandoausführung setzen
fi
Liefert die Kommandoausführung von if 0 zurück, werden wieder entsprechende Kommandos nach then bis zum nächsten elif ausgeführt. Gibt if hingegen einen Wert ungleich 0 zurück, dann findet die Ausführung in der nächsten Verzweigung, hier mit elif, statt. Liefert elif hier einen Wert von 0 zurück, werden die Kommandos im darauf folgenden then bis zu else ausgeführt. Gibt elif hingegen ebenfalls einen Wert ungleich 0 zurück, findet die weitere Ausführung in der else-Alternative statt. else ist hier optional und muss nicht verwendet werden. Selbstverständlich können Sie hier beliebig viele elif-Verzweigungen einbauen. Sobald eines der Kommandos erfolgreich war, wird entsprechender Zweig abgearbeitet (siehe Abbildung 4.5).
Alternativ zu dem etwas längeren elif-Konstrukt wird häufig die case-Fallunterscheidung verwendet (sehr empfehlenswert).
Ein einfaches Anwendungsbeispiel ist es, zu ermitteln, ob ein bestimmtes Kommando auf dem System vorhanden ist. Im Beispiel soll ermittelt werden, was für ein make sich auf dem System befindet. Bspw. gibt es neben make auch gmake, welches von einigen Programmen benutzt wird. Auf neueren Systemen ist häufig ein entsprechender symbolischer Link gesetzt. Beim Verwenden von gmake etwa unter Linux wird behauptet, dass dieses Kommando hier tatsächlich existiert. Ein Blick auf dieses Kommando zeigt uns aber einen symbolischen Link auf make.
you@host > which gmake
/usr/bin/gmake
you@host > ls -l /usr/bin/gmake
lrwxrwxrwx 1 root root 4 2005–02–05 14:21 /usr/bin/gmake -> make
Hier ein solches Shellscript, das testet, ob das Kommando zum Bauen hier xmake (erfunden), make oder gmake heißt.
# Demonstriert eine elif-Verzweigung
# Name: aelif
if which xmake > /dev/null 2>&1
then
echo "xmake vorhanden"
# Hier die Kommandos für xmake
elif which make > /dev/null 2>&1
then
echo "make vorhanden"
# Hier die Kommandos für make
elif which gmake > /dev/null 2>&1
then
echo "gmake vorhanden"
# Hier die Kommandos für gmake
else
echo "Kein make auf diesem System vorhanden"
exit 1
fi
Das Script bei der Ausführung:
you@host > ./aelif
make vorhanden
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.
|