Bash For Loopin käyttäminen Linuxissa: Aloittelijan opetusohjelma
Ohjelmointikielissä silmukat ovat olennaisia osia, ja niitä käytetään, kun haluat toistaa koodia yhä uudelleen, kunnes tietty ehto täyttyy.
Bash-komentosarjassa silmukailla on pitkälti sama rooli, ja niitä käytetään toistuvien tehtävien automatisoimiseen aivan kuten ohjelmointikielissä.
Bash-komentosarjassa on kolmenlaisia silmukoita: for loop, while loop ja until silmukka. Näitä kolmea käytetään toistamaan arvoluetteloa ja suorittamaan määrätty komentosarja.
Tässä oppaassa keskitymme Bash For Loopiin Linuxissa.
Bash For Loop Syntaksi
Kuten aiemmin mainittiin, for-silmukka toistuu useilla arvoilla ja suorittaa joukon Linux-komentoja.
For loop käyttää seuraavan syntaksin:
for variable_name in value1 value2 value3 .. n
do
command1
command2
commandn
done
Tarkastetaan nyt muutama esimerkki bash for -silmukan käytöstä.
Bash For Loop -esimerkki
Yksinkertaisimmassa muodossaan for-silmukka saa seuraavan perusmuodon. Tässä esimerkissä muuttuja n
toistuu aaltosulkeisiin suljettujen numeeristen arvojen ryhmän yli ja tulostaa niiden arvot stdout-tiedostoon.
for n in {1 2 3 4 5 6 7};
do
echo $n
done
Bash For Loop alueilla
Edellisissä esimerkeissä listasimme nimenomaisesti arvot, jotka for-silmukalla iteroidaan, mikä toimii hyvin. Voit kuitenkin vain kuvitella, kuinka työläs ja aikaa vievä tehtävä olisi, jos iteroitaisiin esimerkiksi sadan arvon yli. Tämä pakottaisi sinut kirjoittamaan kaikki arvot väliltä 1-100.
Voit ratkaista tämän ongelman määrittämällä alueen. Määritä aloitus- ja lopetusnumero kahdella pisteellä erotettuna.
Tässä esimerkissä 1 on ensimmäinen arvo, kun taas 7 on alueen viimeinen arvo.
#!/bin/bash
for n in {1..7};
do
echo $n
done
Kun komentotulkkikomentosarja on suoritettu, kaikki alueen arvot luetellaan samalla tavalla kuin yksinkertaisissa silmukoissa.
Lisäksi voimme sisällyttää alueen loppuun arvon, joka saa for-silmukan toistumaan arvojen läpi asteittain.
Seuraava bash-komentosarja tulostaa arvot välillä 1–7 ja 2 askelta arvojen välillä ensimmäisestä arvosta alkaen.
#!/bin/bash
for n in {1..7..2};
do
echo $n
done
Yllä olevasta esimerkistä näet, että silmukka lisäsi aaltosulkeiden sisällä olevia arvoja kahdella arvolla.
Bash For Loops with Arrays
Voit myös helposti iteroida taulukossa määritettyjä arvoja käyttämällä for Loop -toimintoa. Seuraavassa esimerkissä for-silmukka käy läpi kaikki hedelmät-taulukon sisällä olevat arvot ja tulostaa ne vakiomuotoon.
#!/bin/bash
fruits=("blueberry" "peach" "mango" "pineapple" "papaya")
for n in ${fruits[@]};
do
echo $n
done
Operaattori @
käyttää kaikkia elementtejä tai kohdistaa ne. Tämä mahdollistaa kaikkien elementtien iteroinnin yksitellen.
Lisäksi voit käyttää yhtä elementtiä määrittämällä sen sijainnin taulukossa.
Jos esimerkiksi haluat käyttää mango-elementtiä, korvaa @
-operaattori elementin sijainnilla taulukossa (ensimmäinen elementti alkaa nollasta, joten tässä tapauksessa "mango" on merkitty numerolla 2).
For-silmukka näyttää tältä.
#!/bin/bash
fruits=("blueberry" "peach" "mango" "pineapple" "papaya")
for n in ${fruits[2]};
do
echo $n
done
Bash C Style For Loop
Voit käyttää silmukoiden sisällä olevia muuttujia iteroidaksesi useita elementtejä. Tässä C-tyylinen silmukka tulee käyttöön. Seuraava esimerkki havainnollistaa C-tyyliä silmukalle, joka tulostaa luettelon numeerisista arvoista 1–7.
#!/bin/bash
n=7
for (( n=1 ; n<=$n ; n++ ));
do
echo $n
done
Bash C-tyylinen silmukoille ehdollisilla lauseilla
Voit sisällyttää ehdollisia lausekkeita C-tyylinen silmukoille. Seuraavassa esimerkissä olemme sisällyttäneet if-else-lausekkeen, joka tarkistaa ja tulostaa parilliset ja parittomat luvut väliltä 1–7.
#!/bin/bash
for (( n=1; n<=7; n++ ))
do
# Check if the number is even or not
if (( $n%2==0 ))
then
echo "$n is even"
else
echo "$n is odd"
fi
done
Käytä Continue-lausetta Bash For Loopin kanssa
Continue-käsky on sisäänrakennettu komento, joka ohjaa skriptin suorittamista. Bash-skriptien lisäksi sitä käytetään myös ohjelmointikielissä, kuten Python ja Java.
Continue-käsky pysäyttää nykyisen iteroinnin silmukassa, kun tietty ehto täyttyy, ja jatkaa sitten iteraatiota.
Harkitse alla näkyvää for-silmukkaa.
#!/bin/bash
for n in {1..10}
do
if [[ $n -eq '6' ]]
then
echo "Target $n has been reached"
continue
fi
echo $n
done
Koodi tekee näin:
- Rivi 2: Merkitsee for-silmukan alun ja toistaa muuttujan n välillä 1-10.
- Rivi 4: Tarkistaa n:n arvon ja jos muuttuja on 6, skripti toistaa viestin stdoutille ja käynnistää silmukan uudelleen rivin 2 seuraavassa iteraatiossa.
- Rivi 9: Tulostaa arvot näytölle vain, jos rivin 4 ehto on epätosi.
Seuraava on odotettu tulos skriptin suorittamisen jälkeen.
Käytä 'break'-lausetta Bash For Loopin kanssa
'break'-lause, kuten nimestä voi päätellä, pysäyttää tai lopettaa iteraation, kun ehto täyttyy.
Harkitse alla olevaa For-silmukkaa.
#!/bin/bash
for n in {1..10}
do
if [[ $n -eq '6' ]]
then
echo "Target $n has been reached"
break
fi
echo $n
done
echo "All done"
Koodi tekee näin:
- Rivi 2: Merkitsee for-silmukan alun ja toistaa muuttujan n välillä 1-10.
- Rivi 4: Tarkistaa n:n arvon ja jos muuttuja on 6, komentosarja toistaa viestin stdoutille ja pysäyttää iteroinnin.
- Rivi 9: Tulostaa numerot näytölle vain, jos rivin 4 ehto on epätosi.
Lähdöstä näet, että silmukka pysähtyy, kun muuttuja täyttää silmukan ehdon.
Johtopäätös
Se oli opetusohjelma Bash For loopsista. Toivomme, että tämä oli oivaltava. Ota rohkeasti mukaan palautteesi.