Kif Ikteb BASH "għal" Loop

Kif tuża l-BASH "għal" loop fi scripts qoxra

BASH (li jfisser Bourne Again Shell) huwa lingwa tal-kitba utilizzata mill-biċċa l-kbira tas-sistemi operattivi Linux u UNIX.

Tista 'taħdem kmand BASH f'telqa tat-terminal wieħed wara l-ieħor jew tista' żżid il-kmandi għal fajl ta 'test biex tipproduċi skrittura bil-qoxra.

Il-ħaġa kbira dwar kitba scripts qoxra hija li inti tista 'taħdem mill-ġdid u għal darb'oħra. Pereżempju nimmaġina li għandek bżonn iżżid utent ma 'sistema, issettja l-permessi u tmexxi l-ambjent tal-bidu tagħhom. Tista 'jew tikteb il-kmandi fuq biċċa karta u ġġeddihom kif żżid utenti ġodda jew tista' tikteb skritt wieħed u sempliċement tgħaddi parametri f'dik l-iskrittura.

L-ilsna ta 'l-ittri bħal BASH għandhom kostruzzjonijiet simili ta' programmazzjoni bħal lingwi oħra. Per eżempju, tista 'tuża parametri ta' importazzjoni biex tikseb input mit-tastiera u aħżinhom bħala varjabbli. Tista 'mbagħad tikseb l-iskritt biex iwettaq ċerta azzjoni bbażata fuq il-valur tal-parametri tal-input .

Parti ewlenija ta 'kwalunkwe lingwa ta' programmar u kitba hija l-abbiltà li titħaddem l-istess biċċa kodiċi u għal darb'oħra.

Hemm numru ta 'modi kif tirrepeti l-kodiċi (magħruf ukoll bħala loops). F'din il-gwida, int se tintwera kif tikteb linja "għal".

A għal loop jirrepeti ċerta sezzjoni tal-kodiċi aktar u aktar. Ikunu utli sabiex serje ta 'kmandi jistgħu jibqgħu għaddejjin sakemm tintlaħaq kundizzjoni partikolari, wara li tieqaf.

F'din il-gwida, int se tintwera ħames modi biex tuża l-linja għal-linja fi skript BASH.

Qabel ma tibda

Qabel ma tibda bl-eżempji tal-loop, għandek tiftaħ tieqa tat-terminal u segwi dawn il-passi:

  1. Daħħal skripts mkdir ( jitgħallmu aktar dwar mkdir hawn )
  2. Daħħal skripts cd (dan ibiddel id-direttorju għal skripts )
  3. Daħħal nano examplen.sh (fejn n huwa l-eżempju li qed taħdem fuqha)
  4. Daħħal l-iskritt
  5. Agħfas CTRL + O biex tiffranka u CTRL + X għall-ħruġ
  6. Mexxi eżami ta 'eżami (ara, b'n huwa l-eżempju li qed taħdem)

Kif Tmexxi Permezz ta 'Lista

#! / bin / bash
għal numru f'1 2 3 4 5
do
numru ta 'echo $
magħmul
ħruġ 0

Il-mod BASH ta 'l-użu ta' loops "għal" huwa pjuttost differenti mill-mod li l-biċċa l-kbira ta 'l-ipprogrammar u l-lingwi tal-kitba jimmaniġġaw "għal" loops. Ejja niftaħu l-iskritt ...

F'BASH "għal" loop kollha, id-dikjarazzjonijiet bejn do u done jitwettqu darba għal kull oġġett fil-lista.

Fl-eżempju ta 'hawn fuq, il-lista hija dak kollu li jiġi wara l-kelma fi (jiġifieri 1 2 3 4 5).

Kull darba li l-loop iterata, il-valur li jmiss fil-lista jiddaħħal fil-varjabbli speċifikata wara l-kelma "għal" . Fil-linja ta 'hawn fuq, il-varjabbli tissejjaħ in-numru .

Id-dikjarazzjoni ta 'l- eke tintuża għall-informazzjoni murija fuq l-iskrin.

Għalhekk, dan l-eżempju jieħu n-numri minn 1 sa 5 u jwassalhom waħda waħda għall-iskrin:

Kif tagħmel Loop Bejn Bidu u Punt Finali

L-inkwiet bl-eżempju ta 'hawn fuq huwa li jekk trid tipproċessa lista akbar (jiġifieri 1 sa 500), ikun hemm bżonn li l-etajiet tat-tip in-numri kollha fl-ewwel post.

Dan iwassalna għat-tieni eżempju li juri kif għandek tispeċifika punt ta 'bidu u ta' tmiem:

#! / bin / bash
għal numru fi {1..10}
do
echo "numru ta '$"
magħmul
ħruġ 0

Ir-regoli huma bażikament l-istess. Il-valuri wara l-kelma " in" jagħmlu l-lista għal iterazzjoni u kull valur fil-lista jitqiegħed fil-varjabbli (jiġifieri n-numru), u kull darba li l-loop iterata, id-dikjarazzjonijiet bejn do u done jitwettqu.

Id-differenza prinċipali hija l-mod kif tiġi ffurmata l-lista. Il-parentesi tal-kaboċċi {} bażikament jindikaw firxa, u l-firxa, f'dan il-każ, hija 1 sa 10 (iż-żewġ tikek jisseparaw il-bidu u t-tmiem ta 'medda).

Dan l-eżempju, għalhekk, jgħaddi minn kull numru bejn 1 u 10 u joħroġ in-numru għall-iskrin kif ġej:

L-istess linja tista 'tkun miktuba bħal din, b'sintassi identiċi għall-ewwel eżempju:

għal numru f'1 2 3 4 5 6 7 8 9 10

Kif Tgħaddi Numri f'Range

L-eżempju ta 'qabel wera kif il-linja bejn il-bidu u l-punt tat-tmiem, hekk issa ser inħarsu lejn kif taqbeż in-numri fil-medda.

Immaġina li trid tagħmel linja bejn 0 u 100 imma turi biss kull għaxar numru. L-iskrittura li ġejja turi kif tagħmel biss dak:

#! / bin / bash
għan-numru f '{0..100..10}
do
echo "numru ta '$"
magħmul
ħruġ 0

Ir-regoli huma bażikament l-istess. Hemm lista, varjabbli, u sett ta 'dikjarazzjonijiet li għandhom isiru bejn do u done . Il-lista ta 'din id-darba tidher bħal din: {0..100..10}.

L-ewwel numru huwa 0 u n-numru tat-tmiem huwa 100. It-tielet numru (10) huwa n-numru ta 'oġġetti fil-lista li se skip.

L-eżempju ta 'hawn fuq, għalhekk, juri l-output li ġej:

A Tradizzjonali Aktar Qed tfittex Loop

Il-mod BASH tal-kitba għal-linji huwa kemmxejn strambi meta mqabbel ma 'lingwi oħra ta' programmar.

Tista ', madankollu, tikteb għal loop fi stil simili għal-lingwa ta' programmar C, bħal dan:

#! / bin / bash
għal ((numru = 1; numru <100; numru ++))
{
jekk (($ numru% 5 == 0))
allura
Echo "numru $ huwa diviżibbli minn 5"
fi
}
ħruġ 0

Il-linja tibda billi ssettja n-numru varjabbli għal 1 (numru = 1 ). Il-linja se żżomm iterazzjoni filwaqt li l-valur ta 'numru huwa inqas minn 100 ( numru <100 ). Il-valur tan- numru jinbidel billi żżid 1 magħha wara kull iterazzjoni ( numru ++ ).

Kollox bejn iċ-ċingi bil-kaboċċi jitwettaq permezz ta 'kull iterazzjoni tal-linja.

Il-bit bejn iċ-ċingi jikkontrolla l-valur ta ' numru , taqsamha b'5 u tqabbel il-bqija għal 0. Jekk il-bqija hija 0 allura n-numru huwa diviżibbli b'5 u mbagħad jintwera fuq l-iskrin.

Pereżempju:

Jekk trid tibdel id-daqs tal-pass tal-iterazzjoni tista 'temenda n-numru ++ taqsima li għandha tkun numru = numru + 2 , numru = numru + 5 , jew numru = numru + 10 eċċ.

Dan jista 'jitnaqqas aktar għan- numru + = 2 jew numru + = 5 .

Eżempju Prattiku

Għal loops tista 'tagħmel aktar minn listi iterati ta' numri. Int tista 'fil-fatt tuża l-output ta' kmandi oħra bħala l-lista.

L-eżempju li ġej juri kif tista 'tikkonverti fajls awdjo minn MP3 għal WAV :

#! / bin / bash

Il-lista f'dan l-eżempju hija kull fajl bl-estensjoni .MP3 fil-folder attwali u l-varjabbli huwa fajl .

Il-kmand tal- MPG jikkonverti l-fajl MP3 f'WAV. Madankollu, probabilment ikollok bżonn li tinstalla dan billi tuża l-maniġer tal-pakkett tiegħek l-ewwel.