I Bash-skript är loopar kontrollstrukturer som låter dig köra ett kodblock upprepade gånger tills ett visst villkor uppfylls. Loopar är avgörande för att automatisera repetitiva uppgifter, bearbeta datasamlingar och utföra iterativa operationer. Att förstå de olika typerna av loopar som finns tillgängliga i Bash är avgörande för att skriva effektiva och produktiva skript.
for
-loopen är en enkel och vanligt använd loop i Bash. Den låter dig iterera över en lista med värden eller ett intervall av nummer. Syntaksen för for
-loopen är följande:
for variabel i lista do kommandon done
variabel
: Variabeln som används för att iterera över listan eller intervallet.lista
: Listan med värden eller intervallet av nummer att iterera över.kommandon
: Kommandona som ska köras för varje iteration av loopen.Till exempel itererar följande for
-loop över listan med frukter och skriver ut varje frukt:
frukter=(äpple banan apelsin) for frukt in "${frukter[@]}" do echo $frukt done
while
-loopen kör ett kodblock upprepade gånger så länge ett angivet villkor är sant. Syntaksen för while
-loopen är följande:
while villkor do kommandon done
villkor
: Villkoret som avgör om loopen fortsätter att köras.kommandon
: Kommandona som ska köras för varje iteration av loopen.Till exempel fortsätter följande while
-loop att skriva ut nummer från 1 till 10:
i=1 while [ $i -le 10 ] do echo $i ((i++)) done
until
-loopen liknar while
-loopen, men den kör ett kodblock upprepade gånger tills ett angivet villkor blir falskt. Syntaksen för until
-loopen är följande:
until villkor do kommandon done
villkor
: Villkoret som avgör om loopen fortsätter att köras.kommandon
: Kommandona som ska köras för varje iteration av loopen.Till exempel fortsätter följande until
-loop att skriva ut nummer från 1 till 10 tills användaren anger ett icke-numeriskt värde:
read -p "Ange ett nummer: " nummer until [[ $nummer =~ ^[0-9]+$ ]] do echo "Ogiltig inmatning. Ange ett nummer." read -p "Ange ett nummer: " nummer done echo "Du angav $nummer."
do-while
-loopen är en variant av while
-loopen som kör ett kodblock minst en gång innan loopvillkoret kontrolleras. Syntaksen för do-while
-loopen är följande:
do kommandon done while villkor
kommandon
: Kommandona som ska köras för varje iteration av loopen.villkor
: Villkoret som avgör om loopen fortsätter att köras.Till exempel fortsätter följande do-while
-loop att skriva ut nummer från 1 till 10, även om användaren anger ett icke-numeriskt värde:
read -p "Ange ett nummer: " nummer do echo $nummer ((nummer++)) done while [[ $nummer -le 10 ]]
Nested loops är loopar inom loopar. De låter dig utföra komplexa iterationer och bearbeta datastrukturer med flera nivåer. Nested loops kan skapas genom att kombinera olika typer av loopar eller genom att använda samma typ av loop flera gånger.
Till exempel itererar följande nested for
-loopar över en tvådimensionell matris och skriver ut varje element:
array=( [0,0]=1 [0,1]=2 [0,2]=3 [1,0]=4 [1,1]=5 [1,2]=6 [2,0]=7 [2,1]=8 [2,2]=9 ) for ((i=0; i<3; i++)) do for ((j=0; j<3; j++)) do echo ${array[$i,$j]} done done
Loop control statements låter dig ändra flödet i en loop. De två mest använda loop control statements i Bash är break
och continue
.
break
-satsen används för att avsluta en loop i förtid. När en break
-sats påträffas avslutas loopen omedelbart och körningen fortsätter med satsen efter loopen.
Till exempel använder följande for
-loop break
-satsen för att avsluta loopen när värdet på i
når 5:
for ((i=0; i<10; i++)) do if [ $i -eq 5 ] then break fi echo $i done
continue
-satsen används för att hoppa över den aktuella iterationen av en loop och fortsätta med nästa iteration. När en continue
-sats påträffas hoppas de återstående satserna i den aktuella iterationen över och loopen går vidare till nästa iteration.
Till exempel använder följande while
-loop continue
-satsen för att hoppa över jämna tal:
i=0 while [ $i -lt 10 ] do ((i++)) if [ $((i % 2)) -eq 0 ] then continue fi echo $i done
Loopar är viktiga kontrollstrukturer i Bash-skript som låter dig automatisera repetitiva uppgifter, bearbeta datasamlingar och utföra iterativa operationer. Att förstå de olika typerna av loopar som finns tillgängliga i Bash och hur man använder dem effektivt är avgörande för att skriva effektiva och produktiva skript. Dessutom ger loop control statements dig möjlighet att ändra flödet i loopar, vilket gör dem ännu mer mångsidiga.
För att bli skicklig i att använda loopar i Bash är det viktigt att öva och experimentera med olika scenarier. Ju mer du arbetar med loopar, desto bättre kommer du att bli på att förstå deras beteende och tillämpa dem för att lösa verkliga problem.
YesNo
Lämna ett svar