Bash 'Para sa' Loop: Tutorial at Mga Halimbawa

Ang Bash (Bourne Again Shell) ay isang shell command prompt at scripting language sa GNU/Linux operating system. Ito ang default na shell para sa karamihan ng mga distribusyon ng Linux.

Tulad ng karamihan sa mga wika sa pag-script, ang Bash ay nagbibigay ng mga loop syntax upang ulitin ang mga katulad na gawain nang maraming beses. Sa artikulong ito, matututunan natin kung paano gamitin ang para sa loop sa Bash.

Panimula

Ang isang tipikal na script ng Bash ay naglalaman ng isang serye ng mga utos na isasagawa nang sunud-sunod. Maaaring gamitin ang mga variable upang mag-imbak ng mga string, mga halaga ng integer index, mga resulta ng isang command, atbp. Kinakailangan ang mga loop kapag gusto ng user na magsagawa ng partikular na command nang maraming beses. Ito ay partikular na gamit kapag ang output ng isang utos ay nasa anyo ng isang listahan, at sa bawat resulta, sa listahan, isang pangalawang utos ang patakbuhin.

Pangkalahatang Syntax

Ang pangkalahatang syntax para sa para sa loop sa Bash ay:

para sa gawin ... ... tapos na

Dito, ang ay isang Bash variable, na dapat ay isang wastong Linux shell variable name, ibig sabihin, ang pangalan ay naglalaman ng kumbinasyon ng mga titik(az, AZ), numero (0-9) at underscore ( _ ) at dapat itong magsimula sa alinman sa isang titik o isang underscore.

Ang ay alinman sa isang custom na hanay ng mga integer index na i-loop o isang custom na listahan ng mga integer o string. Maaari rin itong maglaman ng isa pang command sa Linux, gayunpaman, ang output ng naturang command ay dapat na pinaghihiwalay ng mga puwang o mga newline na character, ibig sabihin, parsable ng Bash sa isang listahan (Ang isang listahan sa Bash ay karaniwang isang koleksyon ng mga halaga na pinaghihiwalay ng isang puwang o isang bagong linya ).

Ang alinmang (mga) utos na dapat isagawa ay dapat ilagay sa loob ng gawin..tapos na harangan.

Tingnan natin ang ilang simpleng halimbawa.

Pag-looping sa isang hanay ng mga halaga ng Integer: Ang sumusunod na code ay lumilikha ng mga direktoryo na pinangalanang dir1, dir2, dir3 hanggang sa dir10.

para sa i sa {1..10} gawin mkdir dir$i tapos na

Pag-looping sa isang listahan ng mga nakapirming halaga: Ang sumusunod na code ay nagpi-print ng bawat string o integer sa ibinigay na nakapirming listahan.

para ako sa Hello 1 2 3 Bye! gawin echo $i tapos na

Pag-looping sa output ng isang command: Ang sumusunod na code ay umiikot sa output ng ls at nagpi-print ng pangalan ng bawat file sa ibinigay na format.

para sa i sa `ls` do echo "Finame is $i" tapos na

Syntax batay sa expression

Ang isang expression-based syntax na katulad ng C programming language ay posible rin sa Bash:

para sa ((Expression 1; Expression 2; Expression 3)) gawin ... ... tapos na

dito, Pagpapahayag 1 ay ang initialization ng index variable(s). Pagpapahayag 2 ay ang kondisyon kung kailan dapat lumabas ang loop; ang kundisyong ito ay sinusuri sa bawat pag-ulit. Pagpapahayag 3 tumutukoy sa pagtaas/pagbawas/pagbabago sa halaga ng (mga) variable ng index

Ang sumusunod na halimbawa ay nagpi-print lamang ng mga halaga mula 0 hanggang 4:

para sa ((i=0;i<5;i++)) gawin echo $i tapos na

Ang sumusunod na halimbawa ay lumilikha ng isang walang katapusang loop, dahil walang mga expression na tinukoy:

para sa (( ; ; )) gawin echo "Pindutin ang Ctrl-C upang ihinto" tapos na

Break at Magpatuloy

Pahayag ng Break para sa Conditional Exit

Maaari rin nating gamitin ang conditional statement kung sa loob ng loop. Ang kung ang pahayag ay maaaring gamitin sa a pahinga pahayag, para sa isang kondisyon na paglabas mula sa loop.

para sa ((i=0;i<10;i++)) gawin kung [[ $i -eq 5 ]] tapos break else echo $i; tapos na

Ang loop sa itaas ay magpi-print ng mga numero mula 0 hanggang 4. Pagkatapos ay kapag ang halaga ng i ay 5, ito ay lalabas sa loop. Ito ay partikular na gamit kapag ang isang loop ay lalabas kapag ang isang command ay nagbibigay ng isang partikular na output. Halimbawa, masira ang sumusunod na loop kung at kapag nakahanap ito ng walang laman na file.

para sa file sa `ls` do flen=`wc -c $file` kung [[ "$flen" = "0 $file" ]] pagkatapos ay echo "$file is empty" break else echo $flen fi done 

Ang utos wc -c nagpi-print ng bilang ng mga linya sa file . Ini-print ito sa format , Halimbawa, 10 test.txt. Aalis tayo sa loop kapag ang bilang ng mga linya ay 0, ibig sabihin, isang walang laman na file.

Ipagpatuloy ang Pahayag upang Laktawan ang isang Pag-ulit nang May Kondisyon

Katulad ng C at marami pang ibang programming language, ang bash ay mayroon ding a magpatuloy statement, upang laktawan ang natitirang bahagi ng isang pag-ulit sa isang loop kung ang isang partikular na kundisyon ay nasiyahan.

para sa ((i=0;i<10;i++)) gawin kung [[ $i -eq 5 ]] pagkatapos ay ipagpatuloy ang fi echo $i; tapos na

Ang loop sa itaas ay magpi-print ng mga numero mula 0 hanggang 10, maliban sa 5, dahil sa panahon ng pag-ulit ng i=5 mayroong isang continue statement, na laktawan ang natitirang code sa loop sa simula sa pag-ulit ng i=6.

Sa sumusunod na halimbawa, ini-print namin ang bilang ng mga linya sa isang file, at gagawin ng isang partikular na pag-ulit magpatuloy kung ito ay isang direktoryo at hindi isang file.

para sa file sa `ls` gawin kung [[ -d $file ]] pagkatapos ay magpatuloy fi wc -c "$file" tapos na

[[ -d $file ]] sinusuri kung ang file ay isang direktoryo. Kung ito ay, pagkatapos ay lumaktaw kami sa susunod na file, ibig sabihin, susunod na pag-ulit. Kung hindi ito isang direktoryo, ini-print namin ang bilang ng mga linya sa file na ginagamit wc utos, tulad ng ipinakita dati.

Paggamit ng Loops: Mga Script at Command Line

Ang loop syntax ay maaaring gamitin sa Bash shell nang direkta, o mula sa isang shell script file. Minsan a para sa loop syntax ay ipinasok sa shell, ang shell ay nagpapatuloy sa prompt upang hayaan ang user na ipagpatuloy ang mga utos na i-loop.

O kaya ay maaaring i-save ito ng user sa isang script file at isagawa ang script file.

Ang #!/bin/bash sa simula ay tumutukoy sa interpreter na gagamitin kapag ang file ay naisakatuparan. Bagama't ang Bash ang pinakakaraniwang ginagamit na shell ngayon, mas gusto ng ilang user ang mga shell na tulad nito zsh, na dapat tukuyin bilang kapalit ng bash sa simula ng file na ito.

Upang magbigay ng mga pahintulot sa pagpapatupad para sa file na ito, patakbuhin ang:

chmod +x test.sh

Sa wakas, upang maisagawa ang file, tumakbo:

./test.sh

Konklusyon

Ang para sa Ang loop sa Bash ay isang medyo simpleng tampok ngunit ginagamit ito sa halos lahat ng uri ng kumplikadong senaryo ng scripting. Ang pag-aaral nito ay napakalayo kung ikaw ay isang regular o advanced na gumagamit ng Linux, o nagsisimulang matuto ng automation para sa System Administration at DevOps na mga gawain.