Kā pārsūtīt argumentus uz Bash-script

Komandas, sintakse un piemēri

Jūs varat rakstīt bash skriptu tā, ka tā saņem argumentus, kas norādīti, kad skripts tiek izsaukts no komandrindas. Šī metode tiek izmantota, ja skriptam ir jāveic nedaudz atšķirīga funkcija atkarībā no ievades parametru (argumenti) vērtībām.

Piemēram, jums var būt skripts ar nosaukumu "stats.sh", kas failā veic noteiktu darbību, piemēram, tā vārdu skaitīšanu. Ja jūs vēlaties, lai šo skriptu varētu izmantot daudzos failos, vislabāk ir nodot faila nosaukumu kā argumentu, lai jūs varētu izmantot to pašu skriptu visiem apstrādājamiem failiem. Piemēram, ja apstrādājamā faila nosaukums ir "songlist", ievadiet šādu komandrindu:

sh stats.sh dziesmu saraksts

Argumenti ir pieejami skriptā, izmantojot mainīgos lielumus $ 1, $ 2, $ 3 utt., Kur $ 1 attiecas uz pirmo argumentu, $ 2 uz otro argumentu u.c. To ilustrē šāds piemērs:

FILE1 = $ 1 wc $ FILE1

Lai lasītprasmi, piešķiriet mainīgo ar aprakstošu nosaukumu pirmā argumenta vērtībai ($ 1) un pēc tam izsaukiet vārdu skaita lietderību ( wc ) šim mainīgajam ($ FILE1).

Ja jums ir mainīgs skaits argumentu, varat izmantot mainīgo "$ @", kas ir visu ievades parametru masīvs. Tas nozīmē, ka varat izmantot for-cilpu, lai iteratīvi apstrādātu katru no tām, kā tas parādīts nākamajā piemērā:

FILE1 failā "$ @" izdarīt wc $ FILE1

Šeit ir piemērs tam, kā izsaukt šo skriptu ar argumentiem no komandrindas:

sh stats.sh songlist1 songlist2 songlist3

Ja argumentam ir atstarpes, jums to jāpievieno ar vienu pēdiņām. Piemēram:

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

Parasti skripts ir rakstīts tādā veidā, ka lietotājs var nodot argumentus jebkurā secībā, izmantojot karodziņus. Izmantojot karodziņu metodi, daži no argumentiem varat arī izvēlēties pēc izvēles.

Pieņemsim, ka jums ir skripts, kas no datubāzes iegūto informāciju izgūst, pamatojoties uz noteiktajiem parametriem, piemēram, "lietotājvārds", "datums" un "produkts", un ģenerē pārskatu norādītajā formātā. Tagad jūs vēlaties rakstīt savu skriptu, lai jūs varētu nodot šos parametrus, kad tiek izsaukts skripts. Tas varētu izskatīties šādi:

makereport -u jsmith -p piezīmjdatoriem -d 10-20-2011 -f pdf

Bash šo funkciju nodrošina ar "getopts" funkciju. Iepriekš minētajā piemērā, jūs varētu izmantot getopts šādi:

Tas ir laika cilpas, kas izmanto "getopts" funkciju un tā saukto "optstring", šajā gadījumā "u: d: p: f:", lai atkārtotu ar argumentu starpniecību. Laika cilpas izmanto optstring, kurā ir karodziņi, kurus var izmantot, lai pārsūtītu argumentus, un piešķir mainīgumam "option" argumenta vērtību, kas paredzēta šim karodziņam. Tad gadījuma paziņojums mainīgo lielumu "opcija" piešķir globālajam mainīgajam, ko var izmantot pēc tam, kad visi argumenti ir lasīti.

Optstring kolonnas nozīmē, ka attiecīgajiem karogiem ir nepieciešamas vērtības. Iepriekš minētajā piemērā visiem karodziņiem seko kols: "u: d: p: f:". Tas nozīmē, ka visiem karodziņiem ir vajadzīga vērtība. Ja, piemēram, nav domu, ka "d" un "f" karogiem ir vērtība, optstring būtu "u: dp: f".

Koleks optstring sākumā, piemēram, ": u: d: p: f:", ir pavisam cita nozīme. Tas ļauj apstrādāt karodziņus, kas nav attēloti optstring. Tādā gadījumā mainīgā opcijas vērtība ir "?" un "OPTARG" vērtība ir iestatīta neparedzētajam karodziņam. Tas ļauj jums parādīt piemērotu kļūdas ziņojumu, informējot lietotāju par kļūdu.

Argumentiem, kuriem nav pievienots karodziņš, ignorē getopts. Ja optstring norādītie karodziņi netiek piedāvāti, kad tiek izsaukts skripts, nekas nenotiek, ja vien jūs savā kodā īpaši neizturat šo lietu. Jebkurus argumentus, ko neapstrādā getops, joprojām var notvert ar parastajiem $ 1, $ 2 utt. Mainīgajiem lielumiem.