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.