logo

Bash Scripting – For Loop

Ker je BASH jezik ukazne vrstice, dobimo precej funkcijsko bogato izkušnjo za izkoriščanje veščin programiranja za izvajanje nalog v terminalu. V skriptih BASH lahko uporabimo zanke in pogojne stavke za izvajanje nekaterih ponavljajočih se in zapletenih težav na preprost programski način. V tem članku se bomo osredotočili na za zanko v skriptih BASH.

Glede na primer uporabe in težavo, ki jo poskuša avtomatizirati, obstaja nekaj načinov za uporabo zank.



  • Preprosta zanka For
  • Zanka for na podlagi obsega
  • Ponavljanje matrike za zanke
  • C-slog za zanke
  • Neskončna for zanka

Preprosta zanka For

Za izvedbo zanke for lahko zapišemo naslednjo sintakso:

#!/bin/bash  for n in a b c; do  echo $n done>
  • V prvi ponovitvi,n>sprejme vrednost a in skript natisne a.
  • V drugi ponovitvi,n>sprejme vrednost b in skript natisne b.
  • V tretji ponovitvi,n>sprejme vrednost c in skript natisne c.

501

Zgornji ukaz bo ponovil podane elemente po v ključno besedo eno za drugo. Elementi so lahko številke, nizi ali druge oblike podatkov.



Zanka for na podlagi obsega

Uporabimo lahko zanke for na podlagi obsega. V tej vrsti zanke lahko določimo število za začetek, zaustavitev in povečanje pri vsaki ponovitvi (neobvezno) v stavku. To lahko storite na dva načina, in sicer tako, da navedete vrednost prirastka/zmanjšanja in privzeto povečate za eno. Sintaksa izgleda takole:

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

500

V zgornji kodi uporabljamo {} za določitev obsega števil. Znotraj zavitih oklepajev določimo začetno točko, ki ji sledita dve piki in končna točka. Privzeto se poveča za eno. Zato natisnemo 5 števil od vključno 1 do 5.



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

502

Tukaj lahko vidimo, da se je zanka povečala za 2 enoti, kot je omenjeno v zavitih oklepajih. Tako je delo s številkami zelo enostavno in priročno. To lahko uporabite tudi z abecednimi znaki.

OPOMBA: V zavitih oklepajih ne moremo uporabiti spremenljivk, zato bomo morali vrednosti trdo kodirati. Za uporabo spremenljivk vidimo tradicionalne zanke for v slogu C v naslednjih nekaj razdelkih.

Ponavljanje matrike za zanke

Po nizih lahko priročno ponavljamo v bashu z uporabo zank for s posebno sintakso. Za dostop do vseh elementov v matriki lahko uporabimo posebne spremenljivke v BASH, tj. @. Poglejmo kodo:

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

503

Elemente matrike lahko ponavljamo z uporabo operatorja @, ki pridobi vse elemente v matriki. Tako jih z uporabo zanke for ponavljamo enega za drugim. Uporabljamo spremenljivko ${variable_name[@]}, v kateri zavit oklepaj tukaj razširi vrednost spremenljivke s, ki je niz nizov. Z operatorjem [@] dostopamo do vseh elementov in jih tako ponavljamo v zanki for. Tukaj, n je iterator, zato lahko natisnemo vrednost ali izvedemo zahtevano obdelavo na njej.

C-slog za zanke

Kot smo že omenili, moramo uporabiti spremenljivke znotraj zank for za ponavljanje po vrsti elementov. In tako imajo zanke for v obliki C zelo pomembno vlogo. Poglejmo, kako jih uporabljamo.

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

504

Kot lahko vidimo, lahko dinamično uporabimo vrednost obsega končnih pogojev. Ne pozabite, da so presledki med oklepaji morda namerni in so del sintakse. Zanke for v slogu C so zanke, ki imajo 3 dele, inicializacijski iterator, inkrementor/dekrementor in končni pogoj.

V zgornji sintaksi smo inicializirali iterator/števec zanke na 1, ki je lahko karkoli po izbiri. Drugi del je končni pogoj, tukaj smo uporabili spremenljivko n ki se inicializira pred zanko for in tako uporabljamo preprosto $ operator, da dobite vrednost spremenljivke. Končno imamo inkrementor/dekrementor, ki spremeni iterator/števec v vrednost, ki je lahko karkoli, vendar smo v primeru uporabili unarni operator (++) da povečate vrednost za eno, kar je enako i=i+1 . Tako lahko uporabimo izjave, kot je i+=2, i–,++i, in tako naprej in tako naprej.

Neskončna for zanka

Tega ne uporabljamo pogosto, vendar je včasih koristno, da določene stvari delujejo. Sintaksa je precej enostavna in podobna zankam for v slogu C.

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

Zanka se začne zn>nastavljen na 4. Povečuje sen>za 1 pri vsaki ponovitvi in ​​natisne vrednostn>doklern>postane enako 9. Kon>doseže 9, thebreak>stavek se izvede in zanka se konča. Skript se ustavi, ko natisne številke od 4 do 8.

505

Kot lahko vidimo, zanka `za` nima pogojev in se zanka za vedno, vendar imamo stavek pogoja, s katerim preverimo, da se ne nadaljuje večno. Uporabimo stavek break znotraj stavka if, da se izvlečemo iz zanke in prenehamo ponavljati z iteratorjem. Za povečanje spremenljivke v zanki smo uporabili inkrementor, sicer je zanka neskončna. Seveda potrebujemo nekaj logike, da izstopimo iz zanke, in zato moramo uporabiti pogojni stavek if.