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.14 Endlosschleifetoptop

Manchmal benötigt man ein Konstrukt, das endlos ausgeführt wird. Hierzu verwendet man gewöhnlich Endlosschleifen. In einer Endlosschleife werden die Kommandos zwischen do und done endlos ausgeführt, ohne dass die Schleife abgebrochen wird. Sie sollten also bedenken, dass hiermit das Script niemals mehr beenden wird und zur aufrufenden Shell zurückkehrt. Daher werden gewöhnlich Scripts mit einer Endlosschleife im Hintergrund mit & ausgeführt (./scriptname &).

Um eine Endlosschleife zu erzeugen, gibt es verschiedene Möglichkeiten. Letztendlich muss nur die Bedingung bei einer Überprüfung gegeben sein. Folglich müsste die Bedingung bei einer while-Schleife immer wahr und bei einer until-Schleife immer falsch sein. Zu diesen Zweck hat man die Kommandos true (für wahr) und false (für falsch) eingeführt. Mit while erreichen Sie so folgendermaßen eine Endlosschleife:

while true
do
   # Kommandos der Endlosschleifen
done

Gleiches mit until:

until false
do
   # Kommandos der Endlosschleife
done

Hier eine solche Endlosschleife in der Praxis:

# Demonstriert eine Endlosschleife mit while
# aneverending
while true
do
   echo "In der Endlosschleife"
   sleep 5    # 5 Sekunden warten
done

Das Script bei der Ausführung:

you@host > ./aneverending
In der Endlosschleife
In der Endlosschleife
In der Endlosschleife
(Strg)+(C)
you@host >

Dieses Script müssen Sie mit dem Signal SIGINT, generiert durch die Tastenkombination (Strg)+(C), quasi mit Gewalt beenden.

Richtig eingesetzt werden Endlosschleifen in Scripts, mit denen man bestimmte Dienste überwacht oder in gewissen Zeitabständen (bspw. mit sleep) gewisse Aktionen ausführen will, wie z. B. das Überprüfen des Mail-Postfachs oder die Verfügbarkeit eines Servers. In der Praxis werden Endlosschleifen recht gern eingesetzt, wobei hier auch mit dem Befehl break gearbeitet werden sollte. Sind zum Beispiel irgendwelche Grenzen oder Fehler (bzw. Bedingungen) aufgetreten, wird break verwendet, wodurch die Endlosschleife beendet wird. Häufig wird dies dann so erreicht:

while true
do
   # Viele Kommandos
   if [ Bedingung ]
   then
      break
   fi
done
# eventuell noch einige Aufräumarbeiten ...

Hinweis   In diesem Kapitel wurden viele Beispiele verwendet, in denen Dateien kopiert oder ausgelesen werden. Es sollte noch erwähnt werden, dass es hierbei häufig zu Problemen mit der Variable IFS kommen kann (siehe Abschnitt 5.3.6), weil viele Benutzer gern Dateinamen oder Verzeichnisse mit einem Leerzeichen trennen. Dies ist ein Ärgernis, das schwer zu kontrollieren ist. Eine mögliche Lösung des Problems finden Sie im Praxisteil des Buchs (siehe Abschnitt 15.2.1). Das Abfangen des Fehlers ist sehr wichtig, um ein inkonsistentes Backup zu vermeiden.




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