Kif Għaddi l-Argumenti għal Bash-Script

Kmandijiet, sintassi u eżempji

Tista 'tikteb kitba bash b'tali mod li tirċievi argumenti speċifikati meta l-kitba tissejjaħ mil-linja tal-kmand. Dan il-metodu jintuża meta script għandu jwettaq funzjoni kemmxejn differenti skont il-valuri tal-parametri tal-input (l-argumenti).

Per eżempju, jista 'jkollok b'kitba msejħa "stats.sh" li twettaq operazzjoni partikolari fuq fajl, bħal meta tgħodd il-kliem tagħha. Jekk trid tkun tista 'tuża dik l-iskrittura f'ħafna fajls, l-aħjar huwa li tgħaddi l-isem tal-fajl bħala argument, sabiex tkun tista' tuża l-istess iskritt għall-fajls kollha li għandhom jiġu pproċessati. Per eżempju, jekk l-isem tal-fajl li għandu jkun ipproċessat huwa "songlist", inti tidħol fil-linja tal-kmand li ġejja:

sh stats.sh songlist

L-argumenti huma aċċessibbli ġewwa skrittura bl-użu tal-varjabbli $ 1, $ 2, $ 3, eċċ., Fejn $ 1 jirreferi għall-ewwel argument, $ 2 għat-tieni argument, eċċ. Dan jidher fl-eżempju li ġej:

FILE1 = $ 1 wc $ FILE1

Għal leġibbiltà, assenja varjabbli b'isem deskrittiv għall-valur tal-ewwel argument ($ 1), u mbagħad imsejħa l-utilità tal-għadd tal-kliem ( wc ) fuq din il-varjabbli ($ FILE1).

Jekk għandek numru varjabbli ta 'argumenti, tista' tuża l-varjabbli "$ @", li hija firxa tal-parametri kollha tal-input. Dan ifisser li tista 'tuża for-loop biex tipproċessa iterativament kull wieħed, kif muri fl-eżempju li ġej:

għal FILE1 f '"$ @" do wc $ FILE1 magħmul

Hawn hu eżempju ta 'kif sejħa din l-iskrittura bl-argumenti mil-linja tal-kmand:

sh stats.sh songlist1 songlist2 songlist3

Jekk argument ikollu spazji, għandek tehmeż bi kwotazzjonijiet singoli. Pereżempju:

sh stats.sh 'songlist 1' 'songlist 2' 'songlist 3'

Spiss kitba tinkiteb b'tali mod li l-utent jista 'jgħaddi l-argumenti fi kwalunkwe ordni li juża bnadar. Bil-metodu tal-bnadar, tista 'wkoll tagħmel xi wħud mill-argumenti fakultattivi.

Ħalli ngħid li għandek kitba li tirkupra l-informazzjoni minn database bbażata fuq parametri speċifikati, bħal "username", "data", u "prodott", u tiġġenera rapport f'format speċifiku. Issa trid tikteb l-iskrittura tiegħek sabiex tkun tista 'tgħaddi f'dawn il-parametri meta tissejjaħ l-iskrittura. Jista 'jidher bħal dan:

makereport -u jsmith -p notebooks -d 10-20-2011 -f pdf

Bash jippermetti din il-funzjonalità bil-funzjoni "getopts". Għall-eżempju ta 'hawn fuq, tista' tuża getopts kif ġej:

Din hija while -loop li tuża l-funzjoni "getopts" u l-hekk imsejħa "optstring", f'dan il-każ "u: d: p: f:", biex iterata permezz tal-argumenti. Il-while-loop mixjiet permezz tal-optstring, li fih il-bnadar li jistgħu jintużaw biex jgħaddu l-argumenti, u jassenja l-valur tal-argument provdut għal dak il-bandiera mal-varjabbli "għażla". Id-dikjarazzjoni tal-każ mbagħad tassenja l-valur tal-varjabbli "għażla" għal varjabbli globali li tista 'tintuża wara li l-argumenti kollha jkunu nqraw.

Il-kolonni fil-optstring jfissru li l-valuri huma meħtieġa għall-bnadar korrispondenti. Fl-eżempju ta 'hawn fuq, il-bnadar kollha huma segwiti minn kolon: "u: d: p: f:". Dan ifisser li l-bnadar kollha jeħtieġu valur. Jekk, per eżempju, il-bnadar "d" u "f" ma kinux mistennija li jkollhom valur, l-optstring ikun "u: dp: f".

Kolon fil-bidu tal-optstring, per eżempju ": u: d: p: f:", għandu tifsira kompletament differenti. Jippermetti li timmaniġġa bnadar li mhumiex rappreżentati fil-optstring. F'dak il-każ il-valur tal-varjabbli "ta 'l-għażla" huwa ssettjat għal "?" u l-valur ta '"OPTARG" huwa ssettjat għall-bandiera mhux mistennija. Dan jippermettilek li turi messaġġ ta 'żball xieraq li jinforma lill-utent bl-iżball.

L-argumenti li mhumiex preċeduti minn bandiera huma injorati minn getopts. Jekk il-bnadar speċifikati fil-optstring ma jiġux ipprovduti meta l-kitba tissejjaħ, ma jseħħ xejn, sakemm ma timmaniġġax dan il-każ speċifikament fil-kodiċi tiegħek. Kwalunkwe argument mhux trattat minn getops xorta jista 'jinqabad bil-fatturi regolari ta' $ 1, $ 2, eċċ.