“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ň.