Nola Argumentuak Bash-Scriptera igarotzea

Komandoak, sintaxia eta adibideak

Bash script bat idatzi dezakezu, esate baterako, komandoa lerroan script-a deitzen denean zehazten diren argumentuak jasotzen ditu. Metodo hau idazketa funtzio apur bat egitean idazteko parametroen (argumentuen) balioen arabera egin behar da.

Adibidez, "stats.sh" izeneko script bat izan dezakezu, fitxategi batean eragiketa zehatz bat egiten du, esate baterako, bere hitzak zenbatzea. Fitxategi askotan script hori erabiltzea nahi baduzu, hobe da fitxategiaren izena argumentu gisa pasatzea, prozesatzeko prozesu guztietarako script bera erabil dezan. Adibidez, prozesatu beharreko fitxategi izena "songlist" bada, hurrengo komando lerroa sartu beharko zenuke:

sh stats.sh akordatzaile

Argumentuak script-ean sartzen dira $ 1, $ 2, $ 3, etab aldagaietan, $ 1 lehenengo argumentua, $ 2 bigarren argumentuari, eta abar. Honako adibide hau ilustratzen da:

FILE1 = $ 1 wc $ FILE1

Irakurgarritasunerako, esleitu izen definitzailea lehenengo argumentu baten balioarekin ($ 1), eta, ondoren, hitzaren zenbaketa erabilgarritasuna ( wc ) aldagai honetan ($ FILE1).

Argumentuen kopuru aldakorra baduzu, "$ @" aldagaia erabil dezakezu, sarrerako parametro guztien multzoa. Horrek esan nahi du foro -begizta bat erabiltzea bakoitza modu iteragarrian prozesatzeko, hurrengo adibidean azaldutako moduan:

FILE1-n "$ @" egin $ fx1 egin du

Hemen script hau deitzeko komando lerroko argumentuekin adibide bat da:

sh stats.sh songlist1 songlist2 songlist3

Argumentu batek espazioak baditu, komatxo bakar batekin itsatsi behar duzu. Adibidez:

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

Askotan script bat idazten da, erabiltzaileak argumentuak pasatzen ditu edozein ordenatan bandera erabiltzen dutenak. Banderak metodologiarekin, argumentu hauetakoren bat ere egin dezakezu.

Esate baterako, zehaztutako parametroetan oinarritutako datu-baseko informazioa berreskuratzen duen script-a daukazula, hala nola "erabiltzaile-izena", "data" eta "produktua", eta txosten bat sortzen du "formatu" zehatz batean. Orain zure idazkera idatzi nahi duzu, parametro hau pasatzeko script-a deitzen duzun arte. Honen itxura izan liteke:

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

Bash funtzionalitate hau "getopts" funtzioarekin gaitzen du. Goiko adibidean, getopts erabil ditzakezu honela:

Hau da "getopts" funtzioa eta "optstring" deitzen dien bitartean, "u: d: p: f:" kasu honetan, argumentuen bidez iteratuko da. Bideoklipa optstring bidez igarotzen da, zeinak argumentuak pasatzeko erabil daitezkeen markak dituena, eta "aukera" aldagaiaren arabera emandako argumentuaren balioa esleitzen du. Kasu-adierazpenak "aukera" aldagaiaren balioa esleitzen du argumentu guztiak irakurri ondoren erabil daitezkeen aldagai global batera.

Optstring-eko koloniek adierazten dute dagokion balioa dagokion balioa dela. Aurreko adibidean, bi aldeek ondoko bi banderak jarraitzen dituzte: "u: d: p: f:". Horrek esan nahi du, bandalek balio bat behar dute. Adibidez, "d" eta "f" banderek balio bat izan ez zutela espero zuten, optstring "u: dp: f" izango litzateke.

Optstring-en hasierako puntu bat, adibidez ": u: d: p: f:", esanahi guztiz desberdina dauka. Aukeratzen ez diren banderak kudeatzeko aukera ematen du. Kasu horretan, "aukera" aldagaiaren balioa "?" Da. eta "OPTARG" balioa ustekabeko bandera ezarrita dago. Errore-mezu egokia erakusten du akatsaren erabiltzaileari jakinarazten.

Bandera bat aurretik ez datozen argumentuak getoptsek ez ikusi egiten zaie. Optstring-en zehaztutako banderak eskuliburuan deitzen ez badira, ez da ezer gertatzen, kasu honetan zure kodean bereziki kudeatzen ez badituzu. Gainopek kudeatzen dituzten argumentuak oraindik ere $ 1, $ 2, etab. Aldagai arruntagabeekin ateratzen dira.