Android

Bash while loop

BASH Scripting Lesson 5 using WHILE loops

BASH Scripting Lesson 5 using WHILE loops

Inhoudsopgave:

Anonim

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:

Number: 0 Number: 1 Number: 2

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.

while: do echo "Press to exit." sleep 1 done while: do echo "Press to exit." sleep 1 done

De while-lus hierboven loopt voor onbepaalde tijd. U kunt de lus beëindigen door op CTRL+C drukken.

Hier is een equivalent van één regel:

while:; do echo 'Press to exit.'; sleep 1; done while:; do echo 'Press to exit.'; sleep 1; done

Lees een bestand regel voor 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 /etc/passwd regel voor regel lezen en elke regel afdrukken.

file=/etc/passwd while read -r line; do echo $line done < "$file"

In plaats van de while-lus te besturen met een voorwaarde, gebruiken we invoeromleiding ( < "$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.

Gebruik bij het regel voor regel read altijd met de optie -r om te voorkomen dat backslash als een escape-teken fungeert.

Standaard snijdt het leescommando de voorloop- / volgspaties (spaties en tabs). Gebruik de optie 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

De instructies break en continue kunnen worden gebruikt om de while-lusuitvoering te besturen.

Break Statement

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 2 .

i=0 while do echo "Number: $i" ((i++)) if]; then break fi done echo 'All Done!'

Number: 0 Number: 1 All Done!

Doorgaan Verklaring

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 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

U zou nu een goed begrip moeten hebben van het gebruik van de bash while-lus.

bash lus terminal