“Shell” skriptlerinde aýlaw üçin nädip ulanmalydygyny öwreniň


Programmirleme dillerinde, aýlawlar möhüm komponentler bolup, belli bir şert ýerine ýetirilýänçä kody gaýtalap gaýtalamak isleseňiz ulanylýar.

Baş skriptde aýlawlar birmeňzeş rol oýnaýar we programmirleme dillerindäki ýaly gaýtalanýan meseleleri awtomatlaşdyrmak üçin ulanylýar.

Baş skriptinde, aýlawyň 3 görnüşi bar: aýlaw üçin, aýlawda we aýlawda. Üçüsi bahalaryň sanawyny gaýtalamak we berlen buýruklar toplumyny ýerine ýetirmek üçin ulanylýar.

Bu gollanmada Linux-daky Bash For Loop-a ünsi jemläris.

Öň bellenip geçilişi ýaly, loop birnäçe bahalaryň üstünde gaýtalanýar we buýruklar toplumyny ýerine ýetirýär.

Aýlaw üçin aşakdaky sintaksis bar:

for variable_name in value1 value2 value3  .. n
do
    command1
    command2
    commandn
done

Indi aýlaw üçin başyň birnäçe mysal ulanylyşyny barlap göreliň.

Aýlaw üçin ýönekeý

Iň ýönekeý görnüşinde “For loop” aşakdaky esasy formaty alýar. Bu mysalda, n üýtgeýjisi egri ýaýlar bilen gurşalan san bahalarynyň toparynyň üstünde gaýtalanýar we bahalaryny stdout-a çykarýar.

for n in {1 2 3 4 5 6 7};
do
   echo $n
done

Aralyklar bilen aýlaw üçin baş

Öňki mysallarda, gowy işleýän aýlaw üçin gaýtalanjak bahalary aç-açan sanadyk. Şeýle-de bolsa, meselem, ýüz bahany gaýtalasaňyz, nähili kyn we wagt talap edýändigini göz öňüne getirip bilersiňiz. Bu sizi 1-den 100-e çenli ähli bahalary ýazmaga mejbur eder.

Bu meseläni çözmek üçin diapazony kesgitläň. Munuň üçin iki döwür bilen bölünip başlamak we bes etmek üçin belgini görkeziň.

Bu mysalda 1 birinji baha, 7 aralykdaky iň soňky baha.

#!/bin/bash

for n in {1..7};
do
   echo $n
done

Gabyk skripti ýerine ýetirilenden soň, diapazondaky ähli bahalar, ýönekeý aýlawlardaky ýaly sanawda görkezilýär.

Mundan başga-da, aýlawyň artýan ädimlerdäki bahalaryň üsti bilen gaýtalanmagyna sebäp boljak diapazonyň soňuna bir baha goşup bileris.

Aşakdaky baş skript 1 bilen 7 aralygyndaky bahalary, birinji bahadan başlap bahalaryň arasynda 2 artýan ädim bilen çap edýär.

#!/bin/bash

for n in {1..7..2};
do
   echo $n
done

Aboveokardaky mysaldan, aýlawyň egri ýaýlaryň içindäki bahalary 2 baha artdyrandygyny görüp bilersiňiz.

Toplumlar üçin aýlawlar üçin baş

Şeýle hem, For Loop ulanyp, massiwde kesgitlenen bahalar arkaly aňsatlyk bilen gaýtalap bilersiňiz. Aşakdaky mysalda, for loop miweleriň içindäki ähli bahalary gaýtalaýar we olary stdout-a çap edýär.

#!/bin/bash

fruits=("blueberry" "peach" "mango" "pineapple" "papaya") 

for n in ${fruits[@]}; 
do
    echo $n
done

@ operatory ähli elementlere girýär ýa-da nyşana alýar. Bu, ähli elementleriň üstünden ýeke-ýekeden gaýtalanmaga mümkinçilik berýär.

Mundan başga-da, massiwdäki ornuny görkezip, bir elemente girip bilersiňiz.

Mysal üçin, mango elementine girmek üçin, @ operatoryny massiwdäki elementiň ornuna çalyşyň (birinji element 0-dan başlaýar, şonuň üçin bu ýagdaýda mango bellener) 2).

Bu aýlawyň görnüşi.

#!/bin/bash

fruits=("blueberry" "peach" "mango" "pineapple" "papaya") 

for n in ${fruits[2]}; 
do
    echo $n
done

Aýlawlar üçin “C” görnüşli

Birnäçe elementiň üstünde gaýtalamak üçin aýlawlaryň içindäki üýtgeýjileri ulanyp bilersiňiz. Ynha, aýlawlar üçin “C” görnüşli girýär. Aşakdaky mysal 1-den 7-e çenli san bahalarynyň sanawyny çap edýän aýlaw üçin C stilini görkezýär.

#!/bin/bash

n=7
for (( n=1 ; n<=$n ; n++ )); 
do
    echo $n
done

Şertli jümleler bilen aýlawlar üçin “C” görnüşli

Aýlawlar üçin “C” görnüşli şertli jümleleri goşup bilersiňiz. Aşakdaky mysalda, 1 bilen 7 aralygyndaky hatda geň sanlary barlaýan we çap edýän if-else jümlesini goşduk.

#!/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

Bash For Loop bilen Dowam et jümlesini ulanyň

Dowam et jümlesi, skriptiň işleýşine gözegçilik edýän içerki buýrukdyr. Baş skriptden başga-da, Python we Java ýaly programmirleme dillerinde hem ulanylýar.

Dowam etmek jümlesi, belli bir şert ýerine ýetirilende aýlawyň içindäki häzirki gaýtalamany togtadýar we soňra gaýtalamagy dowam etdirýär.

Aşakda görkezilen aýlaw üçin serediň.

#!/bin/bash
for n in {1..10}
do
        if [[ $n -eq '6' ]]
        then
              echo "Target $n has been reached"
              continue
        fi
        echo $n
done

Kod şu:

  • 2-nji setir: aýlawyň başyny belleýär we n üýtgeýjisini 1-den 10-a çenli gaýtalaň.
  • 4-nji setir: n-iň bahasyny barlaýar we üýtgeýjiniň 6-a deň bolsa, skript stdout-a habary gaýtalaýar we 2-nji setiriň indiki gaýtalanyşynda aýlawy täzeden başlaýar.
  • 9-njy setir: Diňe 4-nji setirdäki şert ýalňyş bolsa bahalary ekrana çykarýar.

Aşakda skript işledilenden soň garaşylýan çykyş.

“Bash For Loop” bilen “arakesme” jümlesini ulanyň

Adyndan görnüşi ýaly, arakesme jümlesi, şert ýerine ýetirilende gaýtalanmagy saklaýar ýa-da soňlaýar.

Aşakdaky aýlawy gözden geçiriň.

#!/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"

Kod şu:

  • 2-nji setir: aýlawyň başyny belleýär we n üýtgeýjisini 1-den 10-a çenli gaýtalaň.
  • 4-nji setir: n-iň bahasyny barlaýar we üýtgeýjiniň 6-a deň bolsa, skript stdout-a habary gaýtalaýar we gaýtalamagy togtatýar.
  • 9-njy setir: Sanlary diňe 4-nji setirdäki ýagdaý ýalňyş bolsa ekrana çykarýar.

Çykyşdan, üýtgeýjiniň aýlawyň şertine laýyk gelenden soň aýlawyň durandygyny görüp bilersiňiz.

Bu “Bash For” aýlawlary barada sapakdy. Bu düşünjäni taparsyňyz diýip umyt edýäris. Pikirleriňiz bilen agram salyň.