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.11 Die while-Schleiftoptop

Wer jetzt ein wenig neidisch auf die zweite Form der for-Schleife der Bash geschielt hat, dem sei gesagt, dass sich Gleiches auch mit der while-Schleife realisieren lässt (siehe Abbildung 4.12). Die Syntax:

while [bedingung] # oder natürlich auch: while-kommando
do
   kommanodo_1
   ...
   kommando_n
done

Oder die Kurzform:

while [bedingung] ; do kommando_1 ; kommando_n ; done

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

Abbildung 4.12   Die while-Schleife


Die einzelnen Kommandos zwischen do und done werden bei der while-Schleife abgearbeitet, solange die Bedingung wahr (0 oder auch true) ist. Trifft die Bedingung nicht mehr zu und ist falsch (ungleich 0 oder false), wird die Schleife beendet und die Ausführung des Scripts hinter done fortgeführt.

Hierzu nun das Beispiel, dessen Ausführung dieselbe ist wie schon beim Script »afor8«, nur dass die Zuweisung des Anfangswerts vor der while-Schleife erfolgt. Die Bedingung wird bei der while-Schleife überprüft. Der Zähler hingegen wird im Anweisungsblock der Schleife erhöht bzw. verringert. Das Script ist allerdings, da hier ein Array verwendet wird, nur in der Bash und der Korn-Shell ausführbar.

# Demonstriert die Verwendung einer while-Schleife
# awhile1
[ $# -lt 1 ] && echo "Mindestens ein Argument" && exit 1
# Liste von Argumenten in einem Array speichern
# Version: Korn-Shell (auskommentiert)
#set -A array $*
# Version: bash
array=( $* )
i=0
while [ $i -lt $# ]
do
   echo "Argument $i ist ${array[$i]}"
   i=`expr $i + 1`
done
# Countdown
i=5
while [ $i -gt 0 ]
do
   echo $i
   sleep 1          # Eine Sekunde anhalten
   i=`expr $i – 1`
done
echo "...go"
# Auch andere arithmetische Ausdrücke als Zähler möglich
i=100
while [ $i -gt 0 ]
do
   echo $i
   i=`expr $i / 2`
done

Die Ausgabe des Scripts ist dieselbe wie schon beim Script afor8 im Abschnitt zuvor.

Zwar liegt eines der Hauptanwendungsgebiete der while-Schleife im Durchlaufen eines bestimmten Zahlenbereichs, doch häufig wird eine while-Schleife auch für Benutzereingaben verwendet. Im folgenden Beispiel wird das Kommando read eingesetzt, welches in Kapitel 5, Terminal E/A, in dem es um die Benutzerein- und -ausgabe geht, genauer beschrieben wird.

# Demonstriert die Verwendung einer while-Schleife mit Benutzereingabe
# awhile2
while [ "$input" != "ende" ]
do
  # eventuell Befehle zum Abarbeiten hierhin ...
  echo "Weiter mit ENTER oder aufhören mit ende"
  read input
done
echo "Das Ende ist erreicht"

Das Script bei der Ausführung:

you@host > ./awhile2
Weiter mit ENTER oder aufhören mit ende
(ENTER)
Weiter mit ENTER oder aufhören mit ende
ende
Das Ende ist erreicht


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