Bash Die while-Schleife: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „==Einfache Form== Die while-Schleife wird so lange durchlaufen, bis der Returncode ungleich null ist. *cat proggi <syntaxhighlight> #!/bin/bash while [ $# -g…“) |
|||
| (15 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| + | ==Was ist das?== | ||
| + | *Die While-Schleife in Bash wird verwendet, um einen Block von Code so lange auszuführen, wie eine bestimmte Bedingung wahr ist. | ||
| + | *Die grundlegende Syntax einer While-Schleife in Bash lautet: | ||
| + | <syntaxhighlight lang=bash> | ||
| + | while [ Bedingung ] | ||
| + | do | ||
| + | # Code, der wiederholt ausgeführt werden soll | ||
| + | done | ||
| + | </syntaxhighlight> | ||
| + | ==Nassi-Shneiderman-Diagram== | ||
| + | {{#drawio:while-nassi}} | ||
| + | |||
| + | =Hier sind die Schritte, die bei der Ausführung einer While-Schleife in Bash ablaufen= | ||
| + | *Die Bedingung wird zuerst überprüft. | ||
| + | *Wenn die Bedingung wahr (true) ist, wird der Codeblock innerhalb der Schleife ausgeführt. | ||
| + | *Wenn die Bedingung falsch (false) ist, wird die Schleife übersprungen, und die Ausführung des Programms geht zum nächsten Abschnitt nach der Schleife. | ||
| + | |||
| + | *Der Codeblock innerhalb der Schleife wird ausgeführt. | ||
| + | *Dieser Code kann eine oder mehrere Anweisungen enthalten, die wiederholt werden sollen. | ||
| + | *Du kannst Variablen aktualisieren, Berechnungen durchführen, Dateien bearbeiten oder andere Aufgaben ausführen. | ||
| + | |||
| + | *Nachdem der Codeblock ausgeführt wurde, kehrt das Programm zur Überprüfung der Bedingung zurück. | ||
| + | *Wenn die Bedingung immer noch wahr ist, wird der Codeblock erneut ausgeführt. # | ||
| + | *Wenn die Bedingung falsch wird, wird die Schleife beendet, und die Ausführung des Programms wird fortgesetzt. | ||
| + | |||
| + | *Schritte 2 und 3 werden so lange wiederholt, wie die Bedingung wahr ist. | ||
| + | *Sobald die Bedingung falsch wird, wird die While-Schleife beendet, und das Programm fährt mit dem restlichen Code fort. | ||
| + | |||
| + | *Es ist wichtig sicherzustellen, dass der Code innerhalb der While-Schleife so gestaltet ist, dass die Bedingung irgendwann falsch wird, um eine Endlosschleife zu vermeiden. | ||
| + | *Andernfalls könnte der Code unendlich wiederholt werden, was zu einer unerwünschten Ausführung führen würde. | ||
| + | |||
| + | *Die Bedingung in einer While-Schleife kann verschiedene Ausdrücke und Vergleiche enthalten, z. B. Überprüfungen von Variablenwerten, Dateieigenschaften oder Benutzereingaben. | ||
| + | *Solange die Bedingung wahr ist, wird der Codeblock wiederholt ausgeführt. Sobald die Bedingung falsch wird, wird die Schleife beendet. | ||
| + | |||
==Einfache Form== | ==Einfache Form== | ||
Die while-Schleife wird so lange durchlaufen, bis der Returncode ungleich null ist. | Die while-Schleife wird so lange durchlaufen, bis der Returncode ungleich null ist. | ||
| + | ===Beispiel=== | ||
*cat proggi | *cat proggi | ||
| − | <syntaxhighlight> | + | <syntaxhighlight lang=bash> |
#!/bin/bash | #!/bin/bash | ||
while [ $# -ge 1 ] | while [ $# -ge 1 ] | ||
| Zeile 20: | Zeile 55: | ||
1 | 1 | ||
| − | |||
| − | |||
Beispiel: | Beispiel: | ||
| − | <syntaxhighlight> | + | <syntaxhighlight lang=bash> |
#!/bin/bash | #!/bin/bash | ||
COUNTER=$1 | COUNTER=$1 | ||
| Zeile 46: | Zeile 79: | ||
Die Variable SUX wird nacheinander mit jeder Zeile der Datei | Die Variable SUX wird nacheinander mit jeder Zeile der Datei | ||
/etc/passwd belegt, bis die letzte Zeile der Datei /etc/passwd erreicht ist. | /etc/passwd belegt, bis die letzte Zeile der Datei /etc/passwd erreicht ist. | ||
| − | <syntaxhighlight> | + | <syntaxhighlight lang=bash> |
#!/bin/bash | #!/bin/bash | ||
while read SUX | while read SUX | ||
| Zeile 54: | Zeile 87: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Selbstgebautes cat | Selbstgebautes cat | ||
| − | <syntaxhighlight> | + | <syntaxhighlight lang=bash> |
#!/bin/bash | #!/bin/bash | ||
while read ZEILE | while read ZEILE | ||
| Zeile 62: | Zeile 95: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Selbstgebautes tac | Selbstgebautes tac | ||
| − | <syntaxhighlight> | + | <syntaxhighlight lang=bash> |
#!/bin/bash | #!/bin/bash | ||
COUNT=0 | COUNT=0 | ||
| Zeile 70: | Zeile 103: | ||
COUNT=$(($COUNT+1)) | COUNT=$(($COUNT+1)) | ||
done < $1 | done < $1 | ||
| + | COUNT=$(($COUNT-1)) | ||
while [ $COUNT -ge 0 ] | while [ $COUNT -ge 0 ] | ||
do | do | ||
| Zeile 76: | Zeile 110: | ||
done | done | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | |||
| + | =Aufgaben= | ||
| + | *[[Aufgaben Bash while]] | ||
Aktuelle Version vom 7. Juni 2023, 08:54 Uhr
Was ist das?
- Die While-Schleife in Bash wird verwendet, um einen Block von Code so lange auszuführen, wie eine bestimmte Bedingung wahr ist.
- Die grundlegende Syntax einer While-Schleife in Bash lautet:
while [ Bedingung ]
do
# Code, der wiederholt ausgeführt werden soll
done
Nassi-Shneiderman-Diagram
Hier sind die Schritte, die bei der Ausführung einer While-Schleife in Bash ablaufen
- Die Bedingung wird zuerst überprüft.
- Wenn die Bedingung wahr (true) ist, wird der Codeblock innerhalb der Schleife ausgeführt.
- Wenn die Bedingung falsch (false) ist, wird die Schleife übersprungen, und die Ausführung des Programms geht zum nächsten Abschnitt nach der Schleife.
- Der Codeblock innerhalb der Schleife wird ausgeführt.
- Dieser Code kann eine oder mehrere Anweisungen enthalten, die wiederholt werden sollen.
- Du kannst Variablen aktualisieren, Berechnungen durchführen, Dateien bearbeiten oder andere Aufgaben ausführen.
- Nachdem der Codeblock ausgeführt wurde, kehrt das Programm zur Überprüfung der Bedingung zurück.
- Wenn die Bedingung immer noch wahr ist, wird der Codeblock erneut ausgeführt. #
- Wenn die Bedingung falsch wird, wird die Schleife beendet, und die Ausführung des Programms wird fortgesetzt.
- Schritte 2 und 3 werden so lange wiederholt, wie die Bedingung wahr ist.
- Sobald die Bedingung falsch wird, wird die While-Schleife beendet, und das Programm fährt mit dem restlichen Code fort.
- Es ist wichtig sicherzustellen, dass der Code innerhalb der While-Schleife so gestaltet ist, dass die Bedingung irgendwann falsch wird, um eine Endlosschleife zu vermeiden.
- Andernfalls könnte der Code unendlich wiederholt werden, was zu einer unerwünschten Ausführung führen würde.
- Die Bedingung in einer While-Schleife kann verschiedene Ausdrücke und Vergleiche enthalten, z. B. Überprüfungen von Variablenwerten, Dateieigenschaften oder Benutzereingaben.
- Solange die Bedingung wahr ist, wird der Codeblock wiederholt ausgeführt. Sobald die Bedingung falsch wird, wird die Schleife beendet.
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
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
COUNT=$(($COUNT-1))
while [ $COUNT -ge 0 ]
do
echo ${FELD[$COUNT]}
COUNT=$(($COUNT-1))
done
