BASH Scripting Lesson 5 using WHILE loops
Inhoudsopgave:
- Bash while Loop
- Oneindige tijdlus
- Lees een bestand regel voor regel
- Breek en ga door met verklaringen
- Break Statement
- Doorgaan Verklaring
- Conclusie
Lussen zijn een van de fundamentele concepten van programmeertalen. Lussen zijn handig wanneer u een aantal opdrachten meerdere keren wilt uitvoeren totdat aan een bepaalde voorwaarde is voldaan.
In scripttalen zoals Bash zijn lussen handig voor het automatiseren van repetitieve taken. Er zijn 3 basis lusconstructies in Bash scripting, voor lus, terwijl lus en tot lus.
Deze tutorial legt de basis uit van while-loops in Bash, evenals de break- en continue-instructies om de loop van een loop te wijzigen.
Bash while Loop
De while-lus wordt gebruikt om een gegeven set opdrachten een onbekend aantal keren uit te voeren, zolang de gegeven voorwaarde als waar evalueert.
De Bash while-lus heeft de volgende vorm:
while do done
De voorwaarde wordt geëvalueerd voordat de opdrachten worden uitgevoerd. Als de voorwaarde waar is, worden opdrachten uitgevoerd. Anders wordt de lus beëindigd als de voorwaarde onwaar is en wordt de programmabesturing doorgegeven aan de volgende opdracht.
In het onderstaande voorbeeld drukt de lus bij elke iteratie de huidige waarde van de variabele
i
en verhoogt de variabele met één.
i=0 while do echo Number: $i ((i++)) done
De lus herhaalt zich zolang
i
kleiner of gelijk is aan twee. Het zal de volgende uitvoer produceren:
Oneindige tijdlus
Een oneindige lus is een lus die voor onbepaalde tijd wordt herhaald en nooit eindigt. Als de voorwaarde altijd waar is, krijg je een oneindige lus.
In het volgende voorbeeld gebruiken we de ingebouwde opdracht
:
die altijd true retourneert om een oneindige lus te maken. U kunt ook de ingebouwde opdracht
true
gebruiken of een andere instructie die altijd true retourneert.
De while-lus hierboven loopt voor onbepaalde tijd. U kunt de lus beëindigen door op
Hier is een equivalent van één regel: Een van de meest voorkomende gebruiken van de while-lus is om een bestand, gegevensstroom of variabele regel voor regel te lezen. In het volgende voorbeeld zal de while-lus het bestand
In plaats van de while-lus te besturen met een voorwaarde, gebruiken we invoeromleiding (
Gebruik bij het regel voor regel
Standaard snijdt het leescommando de voorloop- / volgspaties (spaties en tabs). Gebruik de optie
De instructies break en continue kunnen worden gebruikt om de while-lusuitvoering te besturen. De instructie break beëindigt de huidige lus en geeft programmabesturing door aan de opdracht die de beëindigde lus volgt. Het wordt meestal gebruikt om de lus te beëindigen wanneer aan een bepaalde voorwaarde is voldaan. In het volgende voorbeeld wordt de uitvoering van de lus onderbroken zodra het huidige iteratie-item gelijk is aan
De instructie continue verlaat de huidige iteratie van een lus en geeft programmabesturing door aan de volgende iteratie van de lus. In het volgende hieronder, als het huidige iteratie-item gelijk is aan
U zou nu een goed begrip moeten hebben van het gebruik van de bash while-lus.
while: do echo "Press to exit." sleep 1 done
while: do echo "Press to exit." sleep 1 done
CTRL+C
drukken.
while:; do echo 'Press to exit.'; sleep 1; done
while:; do echo 'Press to exit.'; sleep 1; done
Lees een bestand regel voor regel
/etc/passwd
regel voor regel lezen en elke regel afdrukken.
file=/etc/passwd while read -r line; do echo $line done < "$file"
< "$file"
) om een bestand door te geven aan de
read
, het commando dat de lus bestuurt. De while-lus loopt totdat de laatste regel wordt gelezen.
read
altijd met de optie
-r
om te voorkomen dat backslash als een escape-teken fungeert.
IFS=
vóór de opdracht
read
om dit gedrag te voorkomen
file=/etc/passwd while IFS= read -r line; do echo $line done < "$file"
Breek en ga door met verklaringen
Break Statement
2
.
i=0 while do echo "Number: $i" ((i++)) if]; then break fi done echo 'All Done!'
Doorgaan Verklaring
2
, zorgt de instructie continue ervoor dat de uitvoering terugkeert naar het begin van de lus en door gaat met de volgende iteratie.
i=0 while do ((i++)) if]; then continue fi echo "Number: $i" done echo 'All Done!'
Number: 1 Number: 3 Number: 4 Number: 5 All Done!
Conclusie
IPhone 3G-vertragingen Gematigd in de loop van de dag
De activeringsproblemen met iPhone 3G verliepen laat in de dag in de VS
Microsoft Research Asia host poorten op 10 jaar Bash
Microsoft Research Asia is in 1998 van een dozijn mensen gegroeid tot meer dan 350 een decennium later.
Htc one x: boot loop probleem oplossen tijdens het installeren van custom roms
Leer hoe je Boot Loop-problemen kunt oplossen tijdens het installeren van aangepaste ROM's op HTC One X.







