Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
Shell-Programmierung von Jürgen Wolf
Einführung, Praxis, Referenz
Buch: Shell-Programmierung

Shell-Programmierung
782 S., mit CD, 44,90 Euro
Rheinwerk Computing
ISBN 3-89842-683-1
gp Kapitel 4 Kontrollstrukturen
  gp 4.1 Bedingte Anweisung mit if
    gp 4.1.1 Kommandos testen mit if
    gp 4.1.2 Kommandoverkettung über Pipes mit if
  gp 4.2 Die else-Alternative für eine if-Verzweigung
  gp 4.3 Mehrfache Alternative mit elif
  gp 4.4 Das Kommando test
    gp 4.4.1 Ganze Zahlen vergleichen
    gp 4.4.2 Ganze Zahlen vergleichen mit let (Bash und Korn-Shell only)
    gp 4.4.3 Zeichenketten vergleichen
    gp 4.4.4 Zeichenketten vergleichen (Bash und Korn-Shell only)
  gp 4.5 Status von Dateien erfragen
  gp 4.6 Logische Verknüpfung von Ausdrücken
    gp 4.6.1 Negationsoperator !
    gp 4.6.2 Die UND-Verknüpfung (-a und &&)
    gp 4.6.3 Die ODER-Verknüpfung (-o und ||)
    gp 4.6.4 Klammerung und mehrere logische Verknüpfungen
  gp 4.7 Short Circuit-Tests – ergebnisabhängige Befehlsausführung
  gp 4.8 Die Anweisung case
    gp 4.8.1 Alternative Vergleichsmuster
    gp 4.8.2 case und Wildcards
    gp 4.8.3 case und Optionen
  gp 4.9 Schleifen
  gp 4.10 for-Schleife
    gp 4.10.1 Argumente bearbeiten mit for
    gp 4.10.2 for und die Dateinamen-Substitution
    gp 4.10.3 for und die Kommando-Substitution
    gp 4.10.4 for und Array (Bash und Korn Shell only)
    gp 4.10.5 for-Schleife mit Schleifenzähler (Bash only)
  gp 4.11 Die while-Schleife
  gp 4.12 Die until-Schleife
  gp 4.13 Kontrollierte Sprünge
    gp 4.13.1 Der Befehl continue
    gp 4.13.2 Der Befehl break
  gp 4.14 Endlosschleifen


Rheinwerk Computing

4.3 Mehrfache Alternative mit elitoptop

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).


Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 4.5   Mehrere Altervativen mit elif


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.

 << zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Shell-Programmierung
Shell-Programmierung
bestellen
 Buchtipps
Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-Programmierung


Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern