Android

Bash mens løkke

Baby Bash ft. Frankie J - Suga Suga (Official Video)

Baby Bash ft. Frankie J - Suga Suga (Official Video)

Indholdsfortegnelse:

Anonim

Loops er et af de grundlæggende begreber i programmeringssprog. Loops er praktisk, når du vil køre en række kommandoer antal gange, indtil en bestemt betingelse er opfyldt.

I scripting-sprog som Bash er løkker nyttige til at automatisere gentagne opgaver. Der er 3 grundlæggende løkkekonstruktioner i Bash-scripting, til loop, while loop og indtil loop.

Denne tutorial forklarer det grundlæggende ved, at løkker i Bash samt pauserne og fortsætter udsagn for at ændre strømmen af ​​en løkke.

Bash mens Loop

Mens loop'en bruges til at udføre et givet sæt kommandoer et ukendt antal gange, så længe den givne tilstand evalueres til sand.

Bash while loop har følgende form:

while do done

Betingelsen evalueres, før kommandoerne udføres. Hvis betingelsen evalueres til sand, udføres kommandoer. Ellers, hvis betingelsen evalueres for at falde, afsluttes loopen, og programstyringen overføres til den følgende kommando.

I eksemplet nedenfor udskriver loopen på hver iteration den aktuelle værdi af variablen i og øger variablen med en.

i=0 while do echo Number: $i ((i++)) done

Tue loop itererer, så længe i er mindre eller lige end to. Det producerer følgende output:

Number: 0 Number: 1 Number: 2

Uendelig, mens Loop

En uendelig sløjfe er en løkke, der gentages på ubestemt tid og aldrig afslutter. Hvis betingelsen altid evalueres til sandt, får du en uendelig løkke.

I det følgende eksempel bruger vi den indbyggede kommando : som altid vender tilbage sandt for at skabe en uendelig sløjfe. Du kan også bruge den true indbyggede kommando eller enhver anden erklæring, der altid returnerer sand.

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

Mens loopen ovenfor kører på ubestemt tid. Du kan afslutte loopen ved at trykke på CTRL+C

Her er en enkeltlinieækvivalent:

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

Læs en fil linje for linje

En af de mest almindelige anvendelser af mens loop er at læse en fil, datastrøm eller variabel linje for linje.

I det følgende eksempel læser while-loopen /etc/passwd fil linje for linje og udskriver hver linje.

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

I stedet for at kontrollere while-loopen med en betingelse, bruger vi input omdirigering ( < "$file" ) til at videregive en fil til read som er den kommando, der styrer loopen. Mens løkken løber, indtil den sidste linje læses.

Når du læser fil linje for linje, skal du altid read med indstillingen -r for at forhindre, at skråstreg fungerer som et flugtegn.

Som standard trimmer den read kommando de førende / bageste hvidafstandstegn (mellemrum og faner). Brug indstillingen IFS= før read kommandoen for at forhindre denne opførsel

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

Brud og fortsæt erklæringer

Sætningerne om brud og fortsættelse kan bruges til at kontrollere eksekveringen af ​​mens sløjfe.

Break statement

Bruddeklarationen afslutter den aktuelle sløjfe og overfører programkontrol til den kommando, der følger den afsluttede sløjfe. Det bruges normalt til at afslutte sløjfen, når en bestemt betingelse er opfyldt.

I det følgende eksempel afbrydes udførelsen af ​​sløjfen, når det nuværende itererede element er lig med 2 .

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

Number: 0 Number: 1 All Done!

Fortsæt erklæring

Fortsætningsangivelsen forlader den aktuelle iteration af en løkke og overfører programstyring til den næste iteration af løkken.

I det følgende nedenfor, når det nuværende itererede element er lig med 2 , vil fortsætningsangivelsen medføre, at eksekveringen vender tilbage til starten af ​​loopen og fortsætter med den næste iteration.

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!

Konklusion

I øjeblikket skal du have en god forståelse af, hvordan du bruger bash mens løkke.

bash loop terminal