Indlela yokudlula iziphakamiso kwi-Bash-Script

Imiyalelo, i-syntax kunye nemizekelo

Ungabhala iskripthi sebhasti kangangokuthi ifumana iingxabano ezichazwe xa iskripthi sabizwa kumgca womyalelo. Le ndlela isetyenziswe xa iskripthi kufuneka senze umsebenzi ohlukileyo ngokuxhomekeka kwiimpawu zamaparitha zengeniso (iingxoxo).

Ngokomzekelo, unakho uxwebhu olubizwa ngokuthi "stats.sh" olwenza umsebenzi othile kwifayile, njengokubala amagama ayo. Ukuba ufuna ukukwazi ukusebenzisa le script kwiifayile ezininzi, kulungile ukuba udlulise igama lefayile njengengxabano, ukuze ungasebenzisa iskripthi esifanayo kuzo zonke iifayile ezizocutshungulwa. Ngokomzekelo, ukuba igama lefayile eliza kucutshungulwa "liluhlu lokungoma", ungangena umgca womyalelo olandelayo:

uluhlu lwengoma

Izimpikiswano zifakwe ngaphakathi kwiskripthi usebenzisa iinguqulelo ze-$ 1, i-$ 2, i-$ 3, njl., Apho i-$ 1 ibhekisela kwingxabano yokuqala, i-$ 2 ukuya kwengxabano yesibini, njalo njalo. Oku kuboniswa kumzekelo alandelayo:

FILE1 = $ 1 wc $ FILE1

Ukufunda, ukwabela iinguqu ngegama elichazayo kwixabiso lempikiswano yokuqala (i-$ 1), uze ubize igama lenkonzo yesibalo ( wc ) kule nguquko ($ FILE1).

Ukuba unenombolo echaseneyo yeengxabano, ungasebenzisa uguquko lwe "$ @", oluluhlu lwazo zonke iiparitha zengeniso. Oku kuthetha ukuba ungasebenzisa i -loop ukuze usebenze ngokulandelelana nganye, njengoko kuboniswe kumzekelo olandelayo:

I-FILE1 kwi "$ @" yenza i $ FILE1 eyenziwe

Nantsi umzekelo wendlela yokubiza le script ngeengxabano ezisuka kumgca wokulawula:

Uluhlu lwengoma ye-sh.sh1 uluhlu lwezingoma2 uluhlu lwezingoma3

Ukuba ingxabano inesithuba, kufuneka uyifake kunye neengcaphuno ezilodwa. Umzekelo:

Uluhlu lwengoma ka shs.sh 1 '' uluhlu lwengoma 2 '' uluhlu lwengoma 3 '

Ngokuqhelekileyo iskripthi sibhaliweyo ukuba umsebenzisi angadlulela kwiingxabano kunoma yimuphi umyalelo usebenzisa iiflegi. Ngeendlela zeflegi, unokwenza ezinye zeengxoxo ezikhethiweyo.

Mxelele unokripthi olufumana ulwazi oluvela kwisiseko sedatha ngokubhekiselele kwiiparitha ezichaziweyo, ezifana "igama lomsebenzisi", "umhla" kunye "nomkhiqizo", kwaye udala ingxelo "kwifomati" ecacisiweyo. Ngoku ufuna ukubhala iskripthi sakho ukuze ukwazi ukudlula kule parameters xa ubizwa nge script. Ingabonakala ngathi:

i-makereport -i-jsmith -p iincwadi-i-10-20-2011 -f pdf

I-Bash yenza le misebenzi isebenze kunye ne "getopts". Ngokomzekelo ongentla, ungasebenzisa i-getopts ngale ndlela:

Lo ngumzuzwana wesikhashana osebenzisa umsebenzi we "getopts" kunye nokuthiwa "optstring", kulo mzekelo "u: d: p: f:", ukuba uqhube ngeengxoxo. I-loop-time ehamba nge-optstring, equlethe iiflegi ezingasetyenziselwa ukudlulisa iingxabano, kwaye zinike ixabiso lempikiswano elinikezelwe kule flegi kwi-variable "option". I-case-statement inike ixabiso lentlobo ekhethiweyo "inketho" kwiintlobo zehlabathi ezinokusetyenziswa emva kokuba zonke iimbambano zifunyenwe.

Iikholoni kwi-optstring kuthetha ukuba ixabiso lifuneka kwiifowuni ezihambelanayo. Kulo mzekelo ungasentla zonke iiflegi zilandelwa yikholoni: "u: d: p: f:". Oku kuthetha ukuba zonke iifowuni zifuna ixabiso. Ukuba, umzekelo, iifayile ze "d" ne "f" azikulindelekanga ukuba zibe nexabiso, i-optstring yayiya kuba "u: dp: f".

Ikholoni ekuqaleni kwe-optstring, umzekelo ": u: d: p: f:", inentsingiselo ehlukileyo ngokupheleleyo. Ikuvumela ukuba uphathe amaflegi angamelwa kwi-optstring. Ngaloo nto ixabiso le-"option" liguqulelwe "?" kwaye ixabiso "OPTARG" lisetyenziswe kwiflegi engalindelekanga. Ikuvumela ukuba ubonise umyalezo ofanelekileyo weposi ulwazisa umsebenzisi wephutha.

Iingxabano ezingaphambi kweflegi zinyanzeliswa yi-getopts. Ukuba iifowuni ezichazwe kwi-optstring ayinikiweyo xa i-script ibizwa, akukho nto eyenzekayo, ngaphandle kokuba ujongene ngqo nale meko kwikhowudi yakho. Naziphi na iingxabano ezingakhange ziphathwe yi-getops ziyakwazi ukufakwa kunye ne-$ 1, i-$ 2, njl.