Tgħallem Kif tuża Bash For Loop fi Shell Scripts


Fil-lingwi tal-ipprogrammar, Loops huma komponenti essenzjali u jintużaw meta trid tirrepeti l-kodiċi għal darb'oħra sakemm tintlaħaq kundizzjoni speċifikata.

Fl-iskript Bash, il-loops għandhom ħafna l-istess rwol u jintużaw biex awtomatizzati ħidmiet ripetittivi bħal fil-lingwi tal-ipprogrammar.

Fl-iskript ta' Bash, hemm 3 tipi ta' loops: for loop, while loop, u until loop. It-tlieta huma użati biex iternu fuq lista ta 'valuri u jwettqu sett partikolari ta' kmandi.

F'din il-gwida, se niffukaw fuq il-Bash For Loop fil-Linux.

Kif issemma qabel, il-linja for itenni fuq firxa ta 'valuri u tesegwixxi sett ta' kmandi.

For loop jieħu s-sintassi li ġejja:

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

Ejja issa niċċekkjaw ftit użi eżempju tal-bash for loop.

Bash Sempliċi Għal Loop

Fl-aktar forma sempliċi tagħha, il-linja For tieħu l-format bażiku li ġej. F'dan l-eżempju, il-varjabbli n itenni fuq grupp ta' valuri numeriċi magħluqa f'ċingi kaboċċi u tipprintja l-valuri tagħhom għal stdout.

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

Bash Għall Loop ma Meded

Fl-eżempji ta 'qabel, aħna elenkajna b'mod espliċitu l-valuri li għandhom jiġu ripetuti mill-linja for, li taħdem tajjeb. Madankollu, tista 'biss timmaġina kemm tkun kompitu ingombranti u li jieħu ħafna ħin kieku kellek ttenni fuq, pereżempju, mitt valur. Dan iġiegħlek tittajpja l-valuri kollha minn 1 sa 100.

Biex tindirizza din il-kwistjoni, speċifika firxa. Biex tagħmel dan, speċifika n-numru biex tibda u tieqaf separati b'żewġ perjodi.

F'dan l-eżempju, 1 huwa l-ewwel valur filwaqt li 7 huwa l-aħħar valur fil-medda.

#!/bin/bash

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

Ladarba l-iskript tal-qoxra jiġi eżegwit, il-valuri kollha fil-medda huma elenkati, simili għal dak li kellna f'linji sempliċi.

Barra minn hekk, nistgħu ninkludu valur fl-aħħar tal-firxa li se jikkawża li l-for loop itenni permezz tal-valuri f'passi inkrementali.

L-iskrittura bash li ġejja tipprintja l-valuri bejn 1 u 7 bi 2 passi inkrementali bejn il-valuri li jibdew mill-ewwel valur.

#!/bin/bash

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

Mill-eżempju ta 'hawn fuq, tista' tara li l-linja żiedet il-valuri ġewwa ċ-ċingi kaboċċi b'2 valuri.

Bash Għal Loops ma Arrays

Tista 'wkoll faċilment tgħaddi minn valuri definiti f'firxa billi tuża For Loop. Fl-eżempju li ġej, il-loop for itenni permezz tal-valuri kollha ġewwa l-firxa tal-frott u jistampahom għal stdout.

#!/bin/bash

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

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

L-operatur @ jaċċessa jew jimmira l-elementi kollha. Dan jagħmilha possibbli li wieħed itenni fuq l-elementi kollha wieħed wieħed.

Barra minn hekk, tista 'taċċessa element wieħed billi tispeċifika l-pożizzjoni tiegħu fi ħdan il-firxa.

Pereżempju biex taċċessa l-element mango, ibdel l-operatur @ bil-pożizzjoni tal-element fl-array (l-ewwel element jibda minn 0, għalhekk f'dan il-każ, mango se jkun indikat b' 2).

Dan huwa kif jidher il-linja for.

#!/bin/bash

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

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

Bash C-styled Għal Loops

Tista 'tuża varjabbli ġewwa loops biex itenni fuq firxa ta' elementi. Dan huwa fejn jidħlu C-styled for loops. L-eżempju li ġej juri C-style for loop li jistampa lista ta 'valuri numeriċi minn 1 sa 7.

#!/bin/bash

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

Bash C-styled Għal Loops B'Dikjarazzjonijiet Kundizzjonali

Tista 'tinkludi dikjarazzjonijiet kundizzjonali ġewwa C-styled for loops. Fl-eżempju li ġej, inkludejna dikjarazzjoni if-else li tiċċekkja u tipprintja numri pari u fard bejn 1 u 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

Uża l-istqarrija 'Kompli' ma' Bash For Loop

Id-dikjarazzjoni 'kompli' hija kmand inkorporat li jikkontrolla kif taħdem script. Minbarra bash scripting, jintuża wkoll f'lingwi ta' programmar bħal Python u Java.

Id-dikjarazzjoni continue twaqqaf l-iterazzjoni attwali ġewwa linja meta tiġi sodisfatta kundizzjoni speċifika, u mbagħad terġa 'tibda l-iterazzjoni.

Ikkunsidra l-for loop muri hawn taħt.

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

Dan huwa dak li jagħmel il-kodiċi:

  • Linja 2: Timmarka l-bidu tal-linja for u erġa l-varjabbli n minn 1 sa 10.
  • Linja 4: Tiċċekkja l-valur ta' n u jekk il-varjabbli hija ugwali għal 6, l-iskrittura tirrepeti messaġġ għal stdout u terġa' tibda l-linja fl-iterazzjoni li jmiss fil-linja 2.
  • Linja 9: Tipprintja l-valuri fuq l-iskrin biss jekk il-kundizzjoni fil-linja 4 tkun falza.

Dan li ġej huwa l-output mistenni wara li tmexxi l-iskrittura.

Uża l-istqarrija 'break' ma' Bash For Loop

Id-dikjarazzjoni ‘break’, kif tissuġġerixxi l-isem, twaqqaf jew ittemm l-iterazzjoni meta tiġi sodisfatta kundizzjoni.

Ikkunsidra l-For loop hawn taħt.

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

Dan huwa dak li jagħmel il-kodiċi:

  • Linja 2: Timmarka l-bidu tal-linja for u erġa l-varjabbli n minn 1 sa 10.
  • Linja 4: Tiċċekkja l-valur ta' n u jekk il-varjabbli hija ugwali għal 6, l-iskrittura tirrepeti messaġġ għal stdout u twaqqaf l-iterazzjoni.
  • Linja 9: Tipprintja n-numri fuq l-iskrin biss jekk il-kundizzjoni fil-linja 4 tkun falza.

Mill-output, tista 'tara li l-linja tieqaf ladarba l-varjabbli tissodisfa l-kundizzjoni tal-linja.

Dak kien tutorja dwar Bash For loops. Nittamaw li sibt dan insightful. Ħossok liberu li tiżen mal-feedback tiegħek.