logo

Bash Scripting – For Loop

Siden BASH er et kommandolinjespråk, får vi en ganske funksjonsrik erfaring for å utnytte programmeringsferdighetene til å utføre oppgaver i terminalen. Vi kan bruke looper og betingede utsagn i BASH-skript for å utføre noen repeterende og vanskelige problemer på en enkel programmatisk måte. I denne artikkelen skal vi fokusere på for løkke i BASH-skript.

Avhengig av brukstilfellet og problemet den prøver å automatisere, er det et par måter å bruke loops på.

  • Enkel for loop
  • Rekkeviddebasert for loop
  • Array-iterasjon for løkker
  • C-stil for løkker
  • Uendelig for loop

Enkel for loop

For å utføre en for-løkke kan vi skrive følgende syntaks:



#!/bin/bash  for n in a b c; do  echo $n done>
  • I den første iterasjonen,n>tar verdien a, og skriptet skriver ut a.
  • I den andre iterasjonen,n>tar verdien b, og skriptet skriver ut b.
  • I den tredje iterasjonen,n>tar verdien c, og skriptet skriver ut c.

501

Kommandoen ovenfor vil iterere over de angitte elementene etter i nøkkelord ett etter ett. Elementene kan være tall, strenger eller andre former for data.

Rekkeviddebasert for loop

Vi kan bruke rekkeviddebasert for løkker. I denne typen loop kan vi spesifisere tallet som skal starte, stoppe og øke ved hver iterasjon (valgfritt) i setningen. Det er to måter du kan gjøre dette på, dvs. ved å nevne øknings-/dekrementeringsverdien og ved å øke med én som standard. Syntaksen ser slik ut:

understreng i java
#!/bin/bash  for n in {1..5};  do  echo $n done>

500

I koden ovenfor bruker vi {} for å spesifisere et tallområde. Inne i de krøllete klammeparentesene spesifiserer vi startpunktet etterfulgt av to prikker og et endepunkt. Som standard øker den med én. Derfor skriver vi ut 5 tall fra 1 til 5 begge inkludert.

#!/bin/bash  for n in {1..5..2};  do  echo $n done>

502

sove i javascript

Her kan vi se at løkken økte med 2 enheter som nevnt i krøllete seler. Dermed gjør dette arbeidet med tall veldig enkelt og praktisk. Dette kan også brukes med alfabetiske tegn.

MERK: Vi kan ikke bruke variabler inne i de krøllede klammeparentesene, så vi må hardkode verdiene. For å bruke variablene ser vi den tradisjonelle C-stilen for loops i de neste avsnittene.

Array-iterasjon for løkker

Vi kan enkelt iterere over arrays i bash ved å bruke for looper med en spesifikk syntaks. Vi kan bruke spesialvariablene i BASH, dvs. @ for å få tilgang til alle elementene i matrisen. La oss se på koden:

#!/bin/bash  s=('football' 'cricket' 'hockey')  for n in ${s[@]};  do  echo $n done>

503

Vi kan iterere over array-elementene ved å bruke @-operatoren som henter alle elementene i arrayen. Ved å bruke for-løkken itererer vi over dem én etter én. Vi bruker variabelen ${variable_name[@]} hvor de krøllete klammeparentesene her utvider verdien av variabelen s her, som er en rekke strenger. Ved å bruke [@]-operatoren får vi tilgang til alle elementene og itererer dermed over dem i for en loop. Her, den n er iteratoren, derfor kan vi skrive ut verdien eller utføre den nødvendige behandlingen på den.

C-stil for løkker

Som sagt tidligere, må vi bruke variablene inne i for-løkkene for å iterere over en rekke elementer. Og dermed spiller den C-stilte for loops en veldig viktig rolle. La oss se hvordan vi bruker dem.

java-løkker
#!/bin/bash  n=7 for (( i=1 ; i<=$n ; i++ ));  do  echo $i done>

504

Som vi kan se, kan vi dynamisk bruke verdien av rekkevidden av sluttbetingelser. Husk at mellomrommene mellom de doble klammeparentesene kan være tilsiktet og er en del av syntaksen. C-stilt for løkker er løkkene som har 3 deler, initialiserende iterator, inkrementor/decrementer og sluttbetingelsen.

I syntaksen ovenfor har vi initialisert loop-iteratoren/telleren til 1 som kan være hva som helst etter valg. Den andre delen er sluttbetingelsen, her har vi brukt variabelen n som initialiseres før for-løkken og dermed bruker vi det enkle $ operatør for å få verdien av variabelen. Til slutt har vi inkrementoren/dekrementeren som endrer iteratoren/telleren til en verdi som kan være alt, men i eksemplet har vi brukt unæroperatoren (++) å øke verdien med en som tilsvarer i=i+1 . Dermed kan vi bruke utsagn som i+=2, i–,++i, og så videre.

Uendelig for loop

Vi bruker ikke dette ofte, men det er noen ganger nyttig å få visse ting til å fungere. Syntaksen er ganske enkel og ligner på C-stilen for loops.

#!/bin/bash  n=4 for (( ; ; ));  do  if [ $n -eq 9 ];then  break  fi  echo $n  ((n=n+1)) done>

Løkken starter medn>satt til 4. Den økern>med 1 ved hver iterasjon og skriver ut verdien avn>førn>blir lik 9. Nårn>når 9, denbreak>setningen utføres, og loopen avsluttes. Skriptet stopper etter å ha skrevet ut tallene 4 til 8.

505

Som vi kan se har 'for'-løkken ingen betingelser og denne går for alltid, men vi har en tilstandserklæring for å sjekke at den ikke fortsetter for alltid. Vi bruker break-setningen inne i if-setningen for å komme ut av loopen og slutte å iterere med iteratoren. Vi har brukt inkrementoren til å øke variabelen i løkken ellers er løkken uendelig. Selvfølgelig trenger vi litt logikk for å bryte ut av loopen, og det er derfor vi trenger å bruke if condition-setningen.