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.