Mmene Mungapititsire Mtsutso ku Bash-Script

Malamulo, ma syntax ndi zitsanzo

Mungathe kulemba malemba a bash kotero kuti amalandira zifukwa zomwe zimatchulidwa pamene script ikuitanidwa kuchokera ku mzere wa lamulo. Njirayi imagwiritsidwa ntchito pamene script ikuchita ntchito zosiyana ndi malingana ndi zikhalidwe za magawo owonjezera (zotsutsana).

Mwachitsanzo, mungakhale ndi script yotchedwa "stats.sh" yomwe imachita ntchito yapadera pa fayilo, monga kuwerengera mawu ake. Ngati mukufuna kugwiritsa ntchito malembawo maofesi ambiri, ndi bwino kudutsa dzina la fayilo ngati mtsutso, kuti muthe kugwiritsa ntchito zofananazo kuti mafayilo onse azisinthidwa. Mwachitsanzo, ngati dzina la fayilo liyenera kusinthidwa ndi "kafukufuku", mungalowetse mzera wotsatira:

Nyimbo za sh stats.sh

Zotsutsana zimapezeka mkati mwa script pogwiritsa ntchito ndalama $ 1, $ 2, $ 3, ndi zina, kumene $ 1 imatanthawuza kukangana koyamba, $ 2 kumatsutsana wachiwiri, ndi zina zotero. Izi zikuwonetsedwa mu chitsanzo chotsatira:

FILE1 = $ 1 wc $ FILE1

Kuti muwerenge kuwerenga, perekani zosinthika ndi dzina lofotokozera ku mtengo wa ndondomeko yoyamba ($ 1), ndiyeno muitaneni mawu ofunika utility ( wc ) pa izi zosinthika ($ FILE1).

Ngati muli ndi nambala yotsutsana yowonjezera, mungagwiritse ntchito kusintha kwa "$ @", zomwe ndizowonjezera magawo onse opangira. Izi zikutanthauza kuti mungagwiritse ntchito -loop kuti muthe kukambirana, monga momwe tawonera pa chitsanzo ichi:

kwa FILE1 mu "$ @" do wc $ FILE1 yapangidwa

Pano pali chitsanzo cha momwe mungatchulire scriptyi ndi zifukwa zochokera ku mzere wa lamulo:

sh stats.sh songlist1 songlist2 songlist3

Ngati mkangano uli ndi malo, muyenera kuugwiritsa ntchito ndi ndemanga imodzi. Mwachitsanzo:

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

Kawirikawiri script yalembedwa kotero kuti wogwiritsa ntchito akhoza kudutsa muzitsulo mu dongosolo lililonse pogwiritsa ntchito mbendera. Ndi njira ya mbendera, mungathe kupanga zina mwazofuna.

Lembani kuti muli ndi script yomwe imatulutsanso mauthenga ochokera ku databata malinga ndi magawo ena, monga "dzina la useri", "tsiku", ndi "mankhwala", ndipo amapanga lipoti mu "maonekedwe". Tsopano mukufuna kulemba script yanu kuti muthe kudutsa mu magawowa pamene script ikuitanidwa. Zingawoneke ngati izi:

makereport -u jsmith -p mabuku - 10-20-2011 -f pdf

Bash imathandiza ntchitoyi ndi ntchito "getopts". Pa chitsanzo chapamwamba, mungagwiritse ntchito getopts motere:

Iyi ndi nthawi yomwe imagwiritsira ntchito "getopts" ntchito ndi otchedwa "optstring", pamutu uwu "u: d: p: f:", kuti mukambirane ndi zifukwa. Chidutswachi chikuyenda kudzera mu optstring, yomwe ili ndi mbendera zomwe zingagwiritsidwe ntchito kupititsa kutsutsana, ndipo zimapereka mtengo wokangana womwe waperekedwa kwa mbenderayo kuti asinthe "chosankha". Nkhaniyi imapereka chiwerengero cha "chosankha" chosinthika ku zosinthika padziko lonse zomwe zingagwiritsidwe ntchito zitatha kuwerengedwa.

Amtundu wa optstring amatanthawuza kuti ziyeneretso zimayenera kuimira mbendera. Zomwe tafotokoza pamwambazi zikutsatiridwa ndi colon: "u: d: p: f:". Izi zikutanthauza, mabendera onse amafunikira phindu. Ngati, mwachitsanzo, mafayilo a "d" ndi "f" sakuyembekezeredwa, optstring adzakhala "u: dp: f".

Chonde pachiyambi cha optstring, mwachitsanzo ": u: d: p: f:", ali ndi tanthauzo losiyana kwambiri. Ikuthandizani kuti mugwiritse ntchito mbendera zomwe siziyimiridwa mu optstring. Zikatero ndiye kuti phindu la "chosankha" likusinthidwa "?" ndipo mtengo wa "OPTARG" waikidwa pa mbendera yosayesedwa. Ikukulolani kuti muwonetsere uthenga wabwino wolakwika pouza wogwiritsa ntchito zolakwitsa.

Zotsutsana zomwe sizitsatiridwa ndi mbendera zimanyalanyazidwa ndi getopts. Ngati majambulo otchulidwa mu optstring sakuperekedwa ngati script ikuyitanidwa, palibe chimene chimachitika, kupatula ngati mukugwiritsira ntchito vutoli mu code yanu. Maganizo alionse omwe sanagwirizane ndi aphungu angathenso kulandiridwa ndi nthawi zonse $ 1, $ 2, ndi zina zotero.