Kijan pou pase Agiman pou yon bach script

Kòmand, sentaks ak egzanp

Ou ka ekri yon script bash konsa ke li resevwa agiman espesifye lè se script la ki sòti nan liy lan lòd. Metòd sa a yo itilize lè yon script gen fè yon fonksyon yon ti kras diferan depann sou valè yo nan paramèt opinyon (agiman yo).

Pou egzanp, ou ka gen yon script ki rele "stats.sh" ki fè yon operasyon patikilye sou yon dosye, tankou konte mo li yo. Si ou vle pou kapab sèvi ak script sa a sou anpil dosye, li pi bon pase non an dosye kòm yon agiman, pou ke ou ka sèvi ak menm script la pou tout dosye yo dwe trete. Pou egzanp, si non an nan dosye a yo dwe trete se "songlist", ou ta antre nan liy lan lòd:

Shatslist.sh songlist

Agiman yo jwenn aksè andedan yon script ki itilize varyab yo $ 1, $ 2, $ 3, elatriye, kote $ 1 refere a premye agiman an, $ 2 nan dezyèm agiman an, ak sou sa. Sa a se ilistre nan egzanp sa a:

FILE1 = $ 1 wc $ FILE1

Pou lizibilite, bay yon varyab ki gen yon non deskriptif nan valè a nan premye agiman an ($ 1), ak Lè sa a, rele sèvis piblik la konte mo ( wc ) sou varyab sa a ($ FILE1).

Si ou gen yon nimewo varyab nan agiman, ou ka itilize varyab la "$ @", ki se yon etalaj de tout paramèt yo opinyon. Sa vle di ou ka sèvi ak yon pou-bouk nan iterativman pwosesis chak yon sèl, tankou ilistre nan egzanp sa a:

pou FILE1 nan "$ @" fè wc $ FILE1 fè

Isit la se yon egzanp sou kouman yo rele sa a script ak agiman soti nan liy lan lòd:

sh stats.sh songlist1 songlist2 songlist3

Si yon agiman gen espas, ou bezwen mete l 'ak quotes sèl. Pa egzanp:

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

Souvan se yon script ki ekri ki itilizatè a ka pase nan agiman nan nenpòt ki lòd lè l sèvi avèk drapo. Avèk metòd drapo a, ou ka tou fè kèk nan agiman yo opsyonèl.

Kite di ou gen yon script ki rekipere enfòmasyon ki sòti nan yon baz done ki baze sou paramèt espesifik, tankou "non itilizatè", "dat", ak "pwodwi", ak jenere yon rapò nan yon "fòma" espesifye. Koulye a, ou vle ekri script ou pou ou ka pase nan paramèt sa yo lè yo rele script la. Li ta ka sanble tankou sa a:

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

Bach pèmèt fonctionnalités sa a ak "getopts" fonksyon an. Pou egzanp ki anwo a, ou ta ka itilize pasan jan sa a:

Sa a se yon ti tan-riban ki itilize "getopts" fonksyon an ak yon sa yo rele "astrenging", nan ka sa a "u: d: p: f:", iterate nan agiman yo. Rèv la pandan y ap-mache nan pèrson a, ki gen drapo yo ki ka itilize yo pase agiman, ak asiyen valè a agiman bay pou drapo a "opsyon" varyab la. Ka-deklarasyon an Lè sa a, asiyen valè a nan "opsyon" varyab nan yon varyab mondyal ki ka itilize apre tout agiman yo te li.

Kolon yo nan optik la vle di ke valè yo gen obligasyon pou drapo yo ki koresponn. Nan egzanp ki anwo a, tout drapo ki te swiv pa yon kolon: "u: d: p: f:". Sa vle di, tout drapo bezwen yon valè. Si, pou egzanp, "d" ak "f" drapo yo pa te espere gen yon valè, opsyon a ta dwe "u: dp: f".

Yon kolon depi nan konmansman an nan objè a, pou egzanp ": u: d: p: f:", gen yon siyifikasyon konplètman diferan. Li pèmèt ou okipe drapo ke yo pa reprezante nan optik la. Nan ka sa a se valè a nan "opsyon" varyab la mete nan "?" ak valè a nan "OPTARG" se mete nan drapo a inatandi. Ki pèmèt ou montre yon mesaj erè ki apwopriye enfòme itilizatè a nan erè a.

Agiman ke yo pa anvan pa yon drapo yo inyore pa Getopts. Si drapo espesifye nan opsyonèl la pa bay lè script la rele, pa gen anyen k ap pase, sof si ou espesyalman okipe ka sa a nan kòd ou a. Nenpòt agiman ki pa okipe pa obtap toujou ka kaptire avèk regilye $ 1, $ 2, elatriye.