Ho Feta Litlhaloso ho Bash-Script

Litaelo, li-syntax le mehlala

O ka ngola script e le hore e amohele likhohlano tse boletsoeng ha script e bitsoa ho tloha molaong oa taelo. Mokhoa ona o sebelisoa ha script e lokela ho etsa mosebetsi o fapaneng hanyane ho ea ka litekanyetso tsa litekanyetso tsa ho kenya (likhang).

Ka mohlala, u ka ba le script e bitsoang "stats.sh" e etsang opereishene e khethehileng ho file, e kang ho bala mantsoe a eona. Haeba o batla ho khona ho sebelisa script ho lifaele tse ngata, ho molemo ho fetisa lebitso la faele e le khang, e le hore o ka sebelisa script e tšoanang bakeng sa lifaele tsohle tse lokelang ho sebetswa. Ka mohlala, haeba lebitso la faele le lokelang ho sebetsanoa ke "lipina tsa lipina", u ka kenya mola o latelang oa taelo:

pina ea lipina tsa sh st.sh

Likhohlano li kenngoa ka har'a script ho sebelisa lipapatso $ 1, $ 2, $ 3, joalo-joalo, moo $ 1 e buang ka khang ea pele, $ 2 ho khang ea bobeli, joalo-joalo. Sena se bontšoa mohlaleng o latelang:

FILE1 = $ 1 wc $ FILE1

Bakeng sa ho bala, arola ho feto-fetoha ka lebitso le hlalosang ka boleng ba khang ea pele ($ 1), ebe o bitsa lentsoe "utility count" ( wc ) ho feto-fetoha hona ($ FILE1).

Haeba u na le linomoro tse fapaneng tsa likhang, u ka sebelisa phapang ea "$ @", e leng mefuta eohle ea likarolo tsa ho kenya. Sena se bolela hore u ka sebelisa mokhoa oa ho lokisa ho sebetsa ka mong le o mong, joalokaha ho bontšitsoe mohlaleng o latelang:

bakeng sa FILE1 ho "$ @" etsa wc $ FILE1 e entseng

Mona ke mohlala oa mokhoa oa ho bitsa mongolo ona ka mabaka a tsoang molaong oa taelo:

sh stats.sh songlist1 songlist2 songlist3

Haeba khang e e-na le libaka, u lokela ho e koahela ka litlhaloso tse le 'ngoe. Ka mohlala:

sh stats.sh 'songlist 1' 'songlist 2' 'pina ea lipina 3'

Hangata se ngotsoe se ngotsoe joalo hoo mochine a ka fetisetsang likhang ka mokhoa ofe kapa ofe o sebelisang lifolakha. Ka mekhoa ea lifolakha, u ka boela ua etsa liqeto tse ling tseo u ka li khethang.

E-re u na le script e fumanang tlhahisoleseding e tsoang boitsebisong bo itšetlehileng ka meeli e boletsoeng, e kang "lebitso la username", "letsatsi", le "sehlahisoa", mme e hlahisa tlaleho "mokhoa" o boletsoeng. Hona joale o batla ho ngola script ea hau e le hore o ka fetela melaong ena ha script e bitsoa. E ka 'na ea shebahala tjena:

makereport -js jsmith -p libukana -d 10-20-2011 -f pdf

Bash e nolofalletsa tshebetso ena ka mosebetsi oa "getopts". Bakeng sa mohlala o ka holimo, u ka sebelisa li-getopts ka tsela e latelang:

Ena ke nako ea nakoana e sebelisang mosebetsi oa "getopts" le seo ho thoeng ke "optstring", tabeng ena "u: d: p: f:", ho pheta ka litsekisano. Nako ea nako e ntse e feta ho optstring, e nang le lifolakha tse ka sebelisoang ho fetisa likhang, le ho fana ka phaello e fanoang bakeng sa folakha ho "khetho" e feto-fetohileng. Tlaleho ea nyeoe eo e fana ka boleng ba "khetho" e feto-fetohileng ho e feto-fetohileng ea lefatše ka bophara e ka sebelisoang ka mor'a hore litsekisano tsohle li baloe.

Bakholone ba optstring ba bolela hore litekanyetso li hlokoa bakeng sa lifolakha tse tšoanang. Mohlala o ka holimo lifolakha tsohle li lateloa ke colon: "u: d: p: f:". Sena se bolela, lifolakha tsohle li hloka bohlokoa. Haeba, ka mohlala, lifolakha tsa "d" le "f" li ne li sa lebelloa hore li be le bohlokoa, optstring e ne e tla ba "u: dp: f".

Colon qalong ea optstring, mohlala ": u: d: p: f:", e na le moelelo o fapaneng ka ho feletseng. E o lumella ho sebetsana le lifolakha tse sa etsoang ho optstring. Tabeng eo, boleng ba mochine oa "khetho" bo behiloe "?" 'me boleng ba "OPTARG" bo behoa ho folakha e sa lebelloang. The e lumella hore u bontše molaetsa o fosahetseng oa molaetsa o tsebisa mosetsang oa phoso.

Likhohlano tse sa etelletsoeng ke folakha li hlokomolohuoa ke getopts. Haeba lifolakha tse boletsoeng ho optstring li sa fanoe ha script e bitsoa, ​​ha ho letho le etsahalang, ntle le hore u sebetse ka ho khetheha nyeoe ena ka khoutu ea hau. Likhohlano leha e le life tse sa sebetsanoeng ke getops li ka 'na tsa nkoa ka chelete e tloaelehileng ea $ 1, $ 2, joalo-joalo.