Bash Die while-Schleife

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Was ist das?

  • Das "while"-Statement in Bash ermöglicht die wiederholte Ausführung von Code, solange eine bestimmte Bedingung erfüllt ist.
  • Die Syntax des "while"-Statements besteht aus dem Schlüsselwort "while", gefolgt von einer Bedingung in runden Klammern und einem abschließenden Semikolon.
  • Der Codeblock, der wiederholt ausgeführt werden soll, wird durch "do" eingeleitet und durch "done" beendet.
  • Während das "while"-Statement ausgeführt wird, wird die Bedingung vor jeder Iteration überprüft.
  • Dolange die Bedingung wahr ist, wird der Codeblock wiederholt ausgeführt. Sobald die Bedingung nicht mehr erfüllt ist, wird die Schleife beendet und die Ausführung wird fortgesetzt.
  • Das "while"-Statement ist nützlich, um Schleifen basierend auf dynamischen Bedingungen zu erstellen und so wiederholte Aktionen in Shell-Skripten zu implementieren.

Einfache Form

Die while-Schleife wird so lange durchlaufen, bis der Returncode ungleich null ist.

Beispiel

  • cat proggi
 #!/bin/bash
 while [ $# -ge 1 ]
 do
  echo $1
  echo $#
  shift
 done
  • ./proggi blau gelb gruen
blau
3
gelb
2
gruen
1

Darstellung als Struktogramm nach Nassi / Shneiderman:

While.jpg

Beispiel:

#!/bin/bash
COUNTER=$1
 while [ $COUNTER -ge 1 ]
  do
   echo $COUNTER
   COUNTER=$(($COUNTER-1))
 done
echo "BUMM BUMM"
  • ./countdown 5
5
4
3
2
1
BUMM BUMM

Sonderform von while

Die Variable SUX wird nacheinander mit jeder Zeile der Datei /etc/passwd belegt, bis die letzte Zeile der Datei /etc/passwd erreicht ist.

 #!/bin/bash
 while read SUX
 do
 echo $SUX
 done  <  /etc/passwd

Selbstgebautes cat

#!/bin/bash
while read ZEILE
 do
  echo $ZEILE
 done < $1

Selbstgebautes tac

#!/bin/bash
COUNT=0
while read ZEILE
 do
 FELD[$COUNT]=$ZEILE
 COUNT=$(($COUNT+1))
 done < $1
while [ $COUNT -ge 0 ]
 do
 echo ${FELD[$COUNT]}
 COUNT=$(($COUNT-1))
 done

Aufgabe

  • Bauen Sie das Perl-Skript adduser' in Bash nach, welches den Anwender nach den optionalen Parametern von useradd befragt
  • Folgendes kann man zum Testen benutzen:
    • echo -n "Benuternamen eingeben: " ; read username
    • echo $username