Android

Bash medan slingan

01.07 Intro to Sed, Awk, and Bash While Loops

01.07 Intro to Sed, Awk, and Bash While Loops

Innehållsförteckning:

Anonim

Loops är ett av de grundläggande begreppen för programmeringsspråk. Loops är praktiska när du vill köra en serie kommandon flera gånger tills ett visst villkor är uppfyllt.

I skriptspråk som Bash är slingor användbara för att automatisera upprepade uppgifter. Det finns tre grundläggande slingkonstruktioner i Bash-skript, för loop, medan loop och tills loop.

Denna handledning förklarar grunderna för medan slingor i Bash såväl som brytningen och fortsätter uttalanden för att ändra flödet i en slinga.

Bash medan Loop

Samtidigt slingan används för att utföra en given uppsättning kommandon ett okänt antal gånger så länge det givna tillståndet utvärderas till sant.

Bash while-loopen har följande form:

while do done

Villkoret utvärderas innan kommandona körs. Om villkoret utvärderas till sant, körs kommandon. Annars om villkoret utvärderar som felaktigt kommer slingan att avslutas och programstyrningen överförs till kommandot som följer.

I exemplet nedan skriver slingan på varje iteration det aktuella värdet för variabeln i och ökar variabeln med en.

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

Tue loop iterates så länge i är mindre eller lika mycket än två. Den kommer att producera följande utgång:

Number: 0 Number: 1 Number: 2

Oändlig medan Loop

En oändlig slinga är en slinga som upprepas på obestämd tid och aldrig upphör. Om villkoret alltid utvärderas till sann får du en oändlig slinga.

I följande exempel använder vi det inbyggda kommandot : som alltid återgår sant för att skapa en oändlig slinga. Du kan också använda det true inbyggda kommandot eller något annat uttalande som alltid returnerar sant.

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

Samtidigt slingan ovan kommer att köras på obestämd tid. Du kan avsluta slingan genom att trycka på CTRL+C

Här är en ekvivalent ekvivalent:

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

Läs en fil rad för rad

En av de vanligaste användningarna av medan loopen är att läsa en fil, dataström eller variabel rad för rad.

I följande exempel läser /etc/passwd filen /etc/passwd rad för rad och skriver ut varje rad.

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

I stället för att kontrollera medan loopen med ett villkor använder vi input omdirigering ( < "$file" ) för att skicka en fil till read vilket är kommandot som styr loopen. Samtidigt slingan körs tills den sista raden läses.

När du läser fil rad för rad använder du alltid read med alternativet -r att förhindra att motstreck fungerar som ett flyktecken.

Som standard tränar det read kommandot de ledande / efterföljande blankstegstecken (mellanslag och flikar). Använd alternativet IFS= före läsekommandot för att förhindra detta beteende

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

Bryt och fortsätt uttalanden

Säkerhetsavbrottet och fortsättningen kan användas för att kontrollera exekvering av slingan.

Break uttalande

Brottmeddelandet avslutar den aktuella slingan och överför programstyrning till kommandot som följer den avslutade slingan. Det används vanligtvis för att avsluta slingan när ett visst villkor är uppfyllt.

I följande exempel kommer exekveringen av slingan att avbrytas när det aktuella itererade objektet är lika 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ätt uttalandet

Fortsättningsförklaringen lämnar den aktuella iterationen av en slinga och överför programstyrning till nästa iteration av slingan.

I det följande nedan, när det nuvarande itererade objektet är lika med 2 fortsättningsmeddelandet att göra att körningen återgår till början av slingan och fortsätter med nästa 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!

Slutsats

Nu bör du ha en god förståelse för hur du använder bash medan slingan.

bash loop terminal