Cara Mlebu Argumentasi menyang Bash-Script

Perintah, sintaks lan conto

Sampeyan bisa nulis naskah bash kaya sing nampi argumen sing ditemtokake nalika script kasebut disebut saka baris perintah. Cara iki digunakake nalika script kudu nglakoni fungsi sing rada beda gumantung marang nilai parameter input (argumen).

Contone, sampeyan duwe script sing disebut "stats.sh" sing nglakoni operasi tartamtu ing file, kayata ngitung tembung-tembung kasebut. Yen sampeyan pengin bisa nggunakake naskah kasebut ing pirang-pirang file, luwih becik lulus jeneng file minangka argumen, supaya sampeyan bisa nggunakake naskah sing padha kanggo kabeh file sing bakal diproses. Contone, yen jeneng file sing bakal diproses yaiku "daftar lagu", sampeyan bakal ngetik baris perintah ing ngisor iki:

songst. sh stats.sh

Alesan sing diakses ing sajrone script nggunakake variabel $ 1, $ 2, $ 3, lan sapiturute, ing ngendi $ 1 nuduhake argumen kapisan, $ 2 kanggo argumen liyane, lan sateruse. Iki digambarake ing conto kaya mangkene:

FILE1 = $ 1 wc $ FILE1

Kanggo readability, nemtokake variabel kanthi jeneng deskriptif kanggo nilai saka argumen kapisan ($ 1), banjur sebutake utilitas tembung tembung ( wc ) ing variabel iki ($ FILE1).

Yen sampeyan duwe argumen jumlah variabel, sampeyan bisa migunakake variabel "$ @", sing arupa array saka kabeh paramèter input. Iki tegese sampeyan bisa nggunakake kanggo-loop kanggo proses ngolah saben siji, minangka gambaran ing conto:

kanggo FILE1 ing "$ @" nggawe wc $ FILE1 rampung

Punika conto cara nelpon skrip iki kanthi argumen saka baris perintah:

sh stats.sh songlist1 songlist2 songlist3

Yen argumen nduweni spasi, sampeyan kudu nglebokke karo tanda kutip tunggal. Tuladhane:

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

Senadyan ana naskah sing ditulis supaya pangguna bisa mlebu ing bantahan manawa kanthi nggunakake bendera. Kanthi cara panji, sampeyan uga bisa nggawe sawetara argumen opsional.

Ngomong duwe skrip sing njupuk informasi saka basis data miturut parameter sing ditemtokake, kayata "jeneng panganggo", "tanggal" lan "produk", lan nggawe laporan ing "format" kasebut. Saiki sampeyan pengin nulis naskah supaya sampeyan bisa mlebu ing paramèter kasebut nalika naskah kasebut disebut. Sampeyan bisa uga katon kaya iki:

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

Bash ndadekake fungsi iki nganggo fungsi "getopts". Kanggo conto ing ndhuwur, sampeyan bisa nggunakake getopts minangka nderek:

Iki minangka daur ulang wektu sing nggunakake fungsi "getopts" lan "optstring", ing kasus iki "u: d: p: f:", kanggo ngulangake argumen kasebut. Saben-sabanjure sabanjure lumaku liwat optstring, sing ngandhut bendera sing bisa digunakake kanggo ngliwati argumen, lan nglebokake nilai argument sing diwenehake kanggo bendera kasebut menyang "opsi" variabel. Kasus-statement banjur nandhani nilai "pilihan" variable menyang variabel global sing bisa digunakake sawisé kabeh argumen wis dibaca.

Jinis ing pangoptimal kasebut tegese nilai-nilai sing dibutuhake kanggo panji sing cocog. Ing conto ndhuwur kabeh panji diikuti karo tandha titik: "u: d: p: f:". Iki tegese, kabeh panji kudu ana nilai. Menawa, contone, bendera "d" lan "f" ora dianggep duwe nilai, opttring bakal "u: dp: f".

Tanda titik ing awal optstring, umpamane ": u: d: p: f:", duwe arti sing beda. Iki ngijini sampeyan kanggo nangani panji sing ora diwakili ing optstring. Ing kasus kasebut, nilai "pilihan" variabel disetel dadi "?" lan nilai "OPTARG" disetel marang bendera sing ora dikarepake. Ngidini sampeyan nampilake pesen kesalahan sing cocok marang pangguna kesalahan kasebut.

Alesan sing ora diwiwiti dening bendera diabaikan dening getopts. Yen panji sing ditemtokake ing optstring ora diwenehake nalika naskah kasebut disebut, ora ana apa-apa, kajaba sampeyan khusus nangani kasus iki ing kode sampeyan. Saben argumen sing ora ditangani dening geters isih bisa dijupuk kanthi reguler $ 1, $ 2, lan liya-liyane.