Mar a bheir thu seachad argamaidean gu sgriob bash

Òrdan, co-sgrìobhadh agus eisimpleirean

Faodaidh tu sgriobt bash a sgrìobhadh gus am bi e a 'faighinn argamaidean air an comharrachadh nuair a thèid an sgriobt a ghairm bhon loidhne-àithne. Tha an dòigh seo air a chleachdadh nuair a dh'fheumas sgriobt a bhith a 'coileanadh rud beag eadar-dhealaichte a rèir luachan nam paramedr ion-chuimhne (na h-argamaidean).

Mar eisimpleir, is dòcha gu bheil script agad air a bheil "stats.sh" a bhios a 'coileanadh obrachadh shònraichte air faidhle, mar a bhith a' cunntadh a fhacail. Ma tha thu airson a bhith comasach air an sgriobt sin a chleachdadh air iomadh faidhle, is fheàrr an fhaidhle a thoirt seachad mar argamaid, gus an urrainn dhut an aon sgriobt a chleachdadh airson a h-uile faidhle a thèid a phròiseasadh. Mar eisimpleir, ma tha ainm an fhaidhle gu bhith air a phròiseasachadh "liosta òrain", cuiridh tu a-steach an loidhne àithne a leanas:

sh stats.sh òran òrain

Gheibhear argamaidean taobh a-staigh sgriobt a 'cleachdadh nan caochladairean $ 1, $ 2, $ 3, msaa, far a bheil $ 1 a' toirt iomradh air a 'chiad argamaid, $ 2 chun an dàrna argamaid, agus mar sin air adhart. Tha seo air a shealltainn anns an eisimpleir a leanas:

FILE1 = $ 1 wc $ FILE1

Airson leughadh, cuir caochladair le ainm thuairisgeul air luach a 'chiad argamaid ($ 1), agus an uairsin cuir fios gu utility ( wc ) air facal ($ FILE1).

Ma tha àireamh caochlaideach de argamaidean agad, faodaidh tu an caochladair "$ @" a chleachdadh, a tha na raon de na h-uidheaman teòiridh uile. Tha seo a 'ciallachadh gun urrainn dhut pròiseas airson-loop a chleachdadh airson gach fear a dhèanamh, mar a chithear san eisimpleir a leanas:

airson FILE1 ann an "$ @" dèan e $ FILE1 deiseil

Seo eisimpleir de mar a chuireas tu an sgriobt seo ri argumaidean bhon loidhne àithne:

sh stats.sh songlist1 songlist2 song song3

Ma tha àiteachan ann an argamaid, feumaidh tu a cheangal a-steach le comharran singilte. Mar eisimpleir:

sh stats.sh 'liosta òran 1' 'liosta òrain 2' 'liosta òrain 3'

Gu tric tha sgriobt air a sgrìobhadh gus am faod an neach-cleachdaidh argamaidean a thoirt seachad ann an òrdugh sam bith a 'cleachdadh brataichean. Le modh nam brataichean, faodaidh tu cuid de na h-argamaidean a dhèanamh cuideachd.

Leig leam gu bheil sgriobt agad a gheibh fiosrachadh bho stòr-dàta stèidhichte air paramadairean sònraichte, mar "ainm-cleachdaidh", "ceann-latha", agus "toradh", agus a 'cruthachadh aithisg ann an "cruth" sònraichte. A-nis tha thu airson do sgriobt a sgrìobhadh gus am faigh thu na paramaman seo a thoirt seachad nuair a thèid an sgriobt a ghairm. Dh'fhaodadh e bhith mar seo:

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

Tha Bash a 'toirt comas don obair seo leis an fheum "getopts". Airson an eisimpleir gu h-àrd, dh'fhaodadh tu getopts a chleachdadh mar a leanas:

Is e seo sreath- ùine a chleachdas an gnìomh "getopts" agus "optstring" mar a chanas sinn ris, anns a 'chùis seo "u: d: p: f:", gus a dhol tro na h-argamaidean. Bidh an t-astar-lùb a 'dol tron ​​chlò-bhualadh, anns a bheil na brataichean a ghabhas cleachdadh gus argamaidean a thoirt seachad, agus a' sònrachadh luach na h-argamaid a tha air a sholarachadh airson a 'bhratach sin chun "roghainn" caochlaideach. An uairsin, tha an aithris-cùise a 'sònrachadh luach an "roghainn" caochlaideach ri caochlaideach cruinne a dh'fhaodas a chleachdadh an dèidh na h-argamaidean uile a bhith air an leughadh.

Tha na colbhan anns an roghainn sgudal a 'ciallachadh gu bheil luachan riatanach airson nam brataichean co-fhreagarrach. Anns an eisimpleir gu h-àrd, tha dà bhratach air an leantainn le dà-phuing: "u: d: p: f:". Tha seo a 'ciallachadh, feumar luach air gach brata. Ma tha, mar eisimpleir, nach robh luach aig na brataichean "d" agus "f" gum biodh an roghainn "u: dp: f".

Tha coloin aig toiseach an sgrìobadh, mar eisimpleir ": u: d: p: f:", tha ciall gu tur eadar-dhealaichte. Tha e a 'toirt cothrom dhut brataichean a làimhseachadh nach eil air an riochdachadh san optstring. Anns a 'chùis sin tha luach a' chasaid "roghainn" air a shuidheachadh gu "?" agus tha luach "OPTARG" suidhichte don bhratach ris nach robh dùil. Leigidh seo leat teachdaireachd mearachd iomchaidh a thaisbeanadh a bheir fios don neach-cleachdaidh air a 'mhearachd.

Chan fhaigh getopts argamaidean nach eil air bratach ro-làimh. Mura h-eil brataichean a tha air an sònrachadh anns an roghainn dìon nuair a thèid an sgriobt a ghairm, chan eil dad a 'tachairt mura h-eil thu a' dèiligeadh gu sònraichte ris a 'chùis seo anns a' chòd agad. Faodar argamaidean sam bith nach eil air an làimhseachadh le goban fhathast a ghlacadh leis na caochlaidhean àbhaisteach $ 1, $ 2, etc..