logo

Kā nodot un parsēt Linux Bash skripta argumentus un parametrus

Argumentu parsēšana un nodošana bash skriptos/čaulas skriptos ir diezgan līdzīga veidam, kādā mēs nododam argumentus funkcijām Bash skriptos. Mēs redzēsim faktisko argumentu nodošanas procesu skriptam, kā arī aplūkosim veidu, kā piekļūt šiem argumentiem skriptā.

Argumentu nodošana pirms skriešanas

Mēs varam nodot parametrus tieši aiz skripta nosaukuma, palaižot komandu bash interpreter. Failam var nodot parametrus vai argumentus. Vienkārši komanda skripta normālai palaišanai, pievienojot parametru vērtību tieši skriptam. Katrs parametrs ir ar atstarpi atdalīta vērtība, kas jānodod čaulas skriptam.

bash scriptname.sh>

Iepriekš minētā komanda vienkārši izpildīs skriptu, nenododot parametrus.



Tā kā tālāk esošā komanda nodos argumentus skriptam.

java mantojums
bash scriptname.sh parameter1 parameter2 parameter3 nth-parameter>

Tiek palaists bash skripts ar nodošanas parametriem

Iepriekš redzamajā ekrānuzņēmumā ir parādīti skriptam nodotie parametri, kā mēs to darīsim, ko mēs paskaidrosim nākamajā sadaļā. Bet šobrīd mēs redzam, ka esam nodevuši parametrus ārpus skripta, izmantojot bash vides mainīgos. Varat pat izmantot virknes un citus datu veidus, taču uzmanieties no atstarpes. Baltā atstarpe padarīs mainīgo par atsevišķu parametru. Tāpēc, jo īpaši attiecībā uz stīgām, esiet piesardzīgs un stingri ieskaujiet tās ar pēdiņām.

Komandrindas argumentu noteikšana

Tagad mēs redzēsim, kā mēs piekļūstam šiem parametriem skripta iekšpusē. Mēs izmantosim nodoto parametru skaitu secībā, t.i., pirmajiem nodotajiem parametriem mēs parsēsim (piekļūsim) parametram, kā mainīgo izmantojot . Pirmais parametrs tiek saglabāts mainīgajā . Turklāt jūs varat piešķirt šo mainīgo jebkuram citam lietotāja definētam mainīgajam, kas jums patīk. Nodotajam n-tam parametram varat izmantot $n, lai piekļūtu konkrētajam parametram. Šeit mainīgā nosaukums sākas ar 1, jo faila nosaukums/skripta nosaukums ir 0. parametrs. Ja jums ir vairāk nekā 9 parametri, noteikti izmantojiet { } ap skaitli, jo bez iekavām, bash redzēs tikai kā un izslēgs 0, tāpēc izmantojiet un tā tālāk, nevis vienkārši .

tīkla slānis datortīklos
#!/bin/bash echo '1st parameter =  ' echo '2nd Parameter =  '>

Iepriekš minētais skripts var piekļūt parametriem no komandrindas/čaulas, izmantojot pozīcijas parametrus, kas ir 1, 2, 3 un tā tālāk.

Piekļuve argumentiem no skripta.

Kā redzat, mēs esam izmantojuši {}, lai piekļūtu parametru mainīgo numuriem, sākot no 10. Skriptu var izmantot cilpām un while cilpām, lai atkārtotu parametrus, taču mēs to apspriedīsim turpmākajās sadaļās.

Piešķiriet norādītos argumentus mainīgajam Bash

Mēs varam to piešķirt arī citiem pielāgotiem mainīgajiem, lai padarītu skriptu dinamiskāku un veidotu to atbilstoši vajadzībām. Lai gan iepriekš minētais skripts, izpildot, izdrukās tikai divus parametrus, noteikti varat piekļūt vairākiem parametriem, izmantojot mainīgo kā parametru secību skaitļos. Skripts var piekļūt pozicionālajiem mainīgajiem no komandrindas un izmantot tos vajadzīgajās vietās, kur vien nepieciešams skripta ietvaros.

#!/bin/bash a= b= p=$(($a*$b)) echo 'The product of $a and $b = $p'>

Piešķiriet norādītos argumentus mainīgajam Bash

Iepriekš minētais skripts piekļūst pozicionālajiem parametriem, t.i., un , kas nodoti skriptā, un saglabā lietotāja definētos mainīgos, lai tiem vēlāk piekļūtu un attiecīgi modificētu. Mēs varam piekļūt arī vairākiem parametriem, izmantojot iteratīvas metodes, kā redzēsim nākamajās sadaļās.

Mums ir arī iespēja pārbaudīt, vai nav NULL vai tukši parametri, kas nodoti, izmantojot karogus -z vai -n. No tā mēs varam pārbaudīt, vai parametri tika nodoti vai nē.

#!/bin/bash if [[ -z  ]]; then echo 'No parameter passed.' else echo 'Parameter passed = ' fi>

Pārbauda, ​​vai pozicionālie parametri ir ievadīti vai nē.

Izmantojot šo skriptu, mēs varam noteikt, vai ir ievadīti pozicionālie parametri vai nekas netika nodots. Karodziņš -z pārbauda NULL vai neinicializētus mainīgos BASH. Karodziņš -z atgriež patieso vērtību, ja nodotais mainīgais ir NULL vai nav inicializēts. Tādējādi mēs varam izmantot pamata If-else paziņojumus, lai noteiktu nodotos parametrus.

Mēs varam izmantot arī karodziņu -n, kas atgriež true, ja netiek nodoti parametri, tāpēc mums ir jāizmanto ! lai mainītu stāvokli.

css treknrakstā

Piemēram:

#!/bin/bash if [[ ! -n  ]]; then echo 'No parameter passed.' else echo 'Parameter passed = ' fi>

Arī šis skripts sniegs tādu pašu izvadi, taču mēs izmantojam karogu -n, nevis -z.

Vairāku argumentu lasīšana ar For vai While cilpu

Mēs varam izmantot @ mainīgo, lai piekļūtu katram parametram, kas nosūtīts skriptam, izmantojot komandrindu. Tas ir īpašs mainīgais, kas satur mainīgo masīvu BASH. Šajā gadījumā mēs to izmantojam vienu pašu, tāpēc tajā ir ietverts ievadīto pozicionālo parametru masīvs. Mēs varam to izmantot, lai atkārtotu parametrus, kas nodoti, izmantojot cilpas vai kamēr cilpu.

#!/bin/bash for i in $@ do echo -e '$i
' done>

Izmantojot cilpas un @ mainīgo, lai piekļūtu parametriem kā masīva elementiem.

Mēs izmantojām uz diapazonu balstītu cilpu, lai atkārtotu, līdz @ masīvā ir elementi. Mēs vienkārši atkārtojam masīvu un izdrukājam elementu. Mēs varam to vienkārši piešķirt, modificēt vērtības un veikt nepieciešamās izmaiņas parametros un argumentos, lai sasniegtu vēlamo rezultātu no skripta.

VAI

Mēs varam arī izdrukāt argumentus, izmantojot while cilpu un BASH vides mainīgos.

js globālais mainīgais
#!/bin/bash i=$(($#-1)) while [ $i -ge 0 ]; do echo ${BASH_ARGV[$i]} i=$((i-1)) done>

Izmantojot cilpu while, lai atkārtotu nodotos parametrus.

css treknraksts

Mēs izmantojam mainīgo ' # ', jo tajā ir ievadīto parametru skaits. Mēs inicializējam parametru skaitu un atņemam vienu, jo mēs izmantosim masīvu, lai to atkārtotu. Tātad, kā parasti, masīva indekss sākas ar 0. Tā kā šis masīvs tiek inicializēts pēc pēdējā nodotā ​​elementa vai parametra, mums ir jāsamazina skaitītājs līdz 0, lai drukātu katru parametru tā nodošanas secībā. Mēs vienkārši izmantojam masīvu BASH_ARGV, lai piekļūtu parametriem un izdrukātu tā vērtību. Turklāt katrā iterācijā mēs samazinām i-iteratora vai skaitītāja vērtību par vienu, izmantojot aritmētiskās dubultiekavas. No tā mēs vienkārši izdrukājam katru skriptam nodoto parametru, izmantojot kamēr cilpu, kā parādīts izvades ekrānuzņēmumā.

Lasīšana ar parametru nosaukumiem

Getopts izmantošana argumentu un parametru parsēšanai

Mēs varam izmantot getopts programmu/ komandu, lai parsētu skriptam nosūtītos argumentus komandrindā/terminālī, izmantojot cilpas un reģistra maiņas paziņojumus.

#!/bin/bash while getopts n:c: option do case '${option}' in n)nation=${OPTARG};; c)code=${OPTARG};; esac done echo 'Nation : $nation' echo 'code : $code'>

Getopts izmantošana argumentu un parametru parsēšanai

Izmantojot getopts, mēs varam tieši piešķirt pozīcijas argumentus/parametrus no komandrindas bash mainīgajiem. Tas ļauj mums labi un sistemātiski pārvaldīt parametrus. Iepriekš minētajā skriptā mēs esam izmantojuši divus argumentus, lai saglabātu bash mainīgos, izmantojot getopts sintaksi, bet cilpas un reģistra maiņas paziņojumus.

Visu argumentu vērtību drukāšana

Mēs varam izdrukāt skriptam nodotos argumentus ar vienkāršu jaudīgu mainīgo “@”, kas saglabā visus nodotos parametrus.

#!/bin/bash echo 'The arguments passed in are : $@'>

Visu argumentu vērtību drukāšana

Piekļūstot nodoto parametru skaitam

Mēs varam arī izmantot mainīgo “#”, lai piekļūtu no komandrindas nodoto parametru skaitam. Mainīgais # pamatā satur skriptam nodoto parametru/argumentu skaitu.

#!/bin/bash echo 'The number of arguments passed in are : $#'>

Piekļūstot nodoto parametru skaitam

Tālāk bija norādīts bash skripta mainīgo nodošanas un parsēšanas process un specifikācijas. Mainīgo lielumu pārslēgšanas un modifikāciju veikšanas loģika ir lietotāja rokās. Šī bija tikai argumentu nodošana un parsēšana no komandrindas uz skriptu, lai padarītu tos dinamiskākus.