Cum trec argumentul într-un script Bash?

How Do I Pass Argument Bash Script



Majoritatea utilizatorilor Linux Mint 20 se găsesc blocați atunci când transmit un argument într-un script bash. Puteți trece argumentele la orice script bash atunci când este executat. Există mai multe modalități simple și utile de a transmite argumente într-un script bash. În acest ghid al articolului, vă vom informa despre câteva modalități foarte ușoare de a transmite și utiliza argumente în scripturile bash.

Trecerea argumentelor folosind variabilele implicite:

Creați un fișier nou cu orice nume folosind comanda tactilă, de ex., File.sh.







$atingerenume de fișier



Deschideți acest fișier nou creat și adăugați un script bash. Am adăugat câteva variabile implicite, de ex. 1 $, 2 $ și 3 $ în consecință. Orice argumente care vor fi transmise prin terminal vor fi stocate în variabilele menționate.







Trebuie să rulați acest fișier folosind comanda ./ urmată de câteva argumente. După cum puteți vedea în imagine, atunci când am trecut argumentele, apare o eroare: Permisiunea refuzată. Acest lucru se datorează faptului că acest fișier nu are drepturi de execuție.

$./nume fișier argument1 argument2 argument

Deci, pentru a acorda drepturile de execuție pentru acest fișier, utilizați comanda sudo chmod pentru a face acest lucru.



$sudo chmod+ x nume de fișier

Acum, rulați din nou fișierul folosind aceeași comandă de mai sus. De data aceasta am oferit diferite argumente. Veți vedea că argumentele nou trecute sunt stocate în variabilele implicite.

Trecerea numelui scriptului Shell ca argument:

Acum, folosind același fișier vechi file.sh cu o mică modificare a variabilelor implicite. Trebuie să adăugați variabila $ 0 în script așa cum se arată.

La executarea aceleiași comenzi ./ shell script, numele scriptului dvs. shell, de ex. ./filename va fi stocat în variabila $ 0 ca argument.

Transmiterea argumentelor ca matrice la variabilă:

Începând cu același fișier file.sh, trebuie să adăugați câteva linii suplimentare în vechiul script. Declarați o variabilă numită matrice. Adăugați o variabilă implicită [email protected] care va stoca argumentele introduse de utilizator ca o matrice. Aceste argumente vor fi analizate la matrice variabilă. Ultima linie va afișa toate argumentele matricei variabile sortate după numărul de index.

Executați scriptul ./ shell. Veți vedea că va afișa argumentele sau valorile stocate ca o matrice în [e-mail protected] analizate la matrice variabilă, dar nu și numele scriptului shell în a doua instrucțiune echo. Veți avea următoarea ieșire.

$./nume fișier argument1 argument2 argument

Utilizați același fișier cu același script. Eliminați doar $ {array [3]} din ultima linie, așa cum este clar în imagine.

După executarea comenzii ./, veți vedea o ieșire similară cu cea din exemplul de mai sus, fără nicio modificare.

De asemenea, puteți obține același rezultat înlocuind ultima linie a scriptului bash cu un singur cuvânt. Trebuie doar să adăugați [email protected] în declarația echo și va afișa argumentele prezente în această matrice variabilă.

Deci, executând din nou comanda ./, veți obține aceleași rezultate.

Verificați numărul total de argumente trecute:

Dimpotrivă, dacă doriți să cunoașteți numărul total de argumente transmise de utilizator, puteți face acest lucru. În acest scop, trebuie doar să înlocuiți [email protected] cu $ # în ecou.

Din nou executând comanda ./, veți vedea acum întreaga figură a argumentelor transmise scriptului. În cazul nostru, 3 argumente sunt transmise ca valoare.

Creați ieșire argument cu linie cu linie:

Creați un nou fișier test.sh în directorul principal. Adăugați scriptul bash așa cum se arată.

Acum executați aceeași comandă veche cu argumente diferite. În primul rând, veți vedea eroarea: Permisiunea refuzată.

Trebuie să executați comanda chmod pentru a acorda acest fișier privilegii sudo. După aceea, rulați din nou comanda ./ shell script. Și veți obține ieșirea argumentelor rând pe rând.

Limitați variabila prin numărul de index al argumentului:

Dacă doriți să limitați variabila folosind numărul său de index, o puteți face foarte ușor. Adăugați paranteze cretate după semnul $ și adăugați numărul de index al argumentului pe care doriți să îl afișați înainte de alte argumente.

Dacă argumentele furnizate de utilizatori sunt mai mici decât numărul de index furnizat în variabila limită, atunci veți obține o valoare de argument goală. De exemplu, am furnizat 4 argumente, dar am dat valoarea argumentului 05 care trebuie afișată. În această situație, variabila va fi afișată goală, deoarece al cincilea argument nu a fost trecut.

Dar când treceți un număr egal sau mai mare de argumente în comandă, veți obține valoarea afișată în rezultat așa cum se arată.

Verificarea argumentelor valorice specifice:

Creați un fișier nou cu numele Check.sh în directorul dvs. de acasă. Adăugați același script bash ca în imaginea de mai jos. În acest script, avem o variabilă var pentru a stoca valoarea argumentului transmisă de utilizator. Apoi avem o declarație if, care va verifica dacă valoarea argumentului trebuie să fie potrivită sau nu. Dacă valoarea argumentului este potrivită cu valoarea furnizată în paranteză, atunci va fi executată prima declarație ecou. Dacă valoarea nu se potrivește, va fi executată a doua instrucțiune ecou.

Când executăm comanda scriptului shell, va genera o eroare. Folosind comanda chmod, putem corecta această eroare.

După aceea, executați scriptul shell pentru fișierul respectiv cu o anumită valoare de argument. În cazul nostru, am furnizat Aqsa ca valoare de argument, care este aceeași cu valoarea afișată în paranteză. Deci, scriptul bash va executa prima declarație ecou așa cum se arată.

Pe de altă parte, dacă furnizați diferitele valori ale argumentului în scriptul shell, acesta va afișa cealaltă declarație de ecou. Aici, am adăugat Rimsha ca valoare de argument, care este diferită de valoarea furnizată în instrucțiunea if. Deci, scriptul bash va executa a doua instrucțiune de ecou.

Concluzie:

Sper că acest ghid te-a ajutat suficient pentru a avea o înțelegere puternică asupra modului de a transmite argumente variabilelor implicite, de a transmite valoarea argumentului ca o matrice unei variabile, de a obține numărul total de argumente transmise, ieșire linie cu linie a argumentelor, de a limita argumentul ieșire folosind numărul de index, verificarea argumentului valorii specifice și multe altele.