Com puc passar argument en un script Bash?

How Do I Pass Argument Bash Script



La majoria dels usuaris de Linux Mint 20 es troben atrapats en passar un argument en un script bash. Podeu passar els arguments a qualsevol script bash quan s'executi. Hi ha diverses maneres senzilles i útils de passar arguments en un script bash. En aquesta guia d’article, us farem saber algunes maneres molt senzilles de passar i utilitzar arguments als vostres scripts bash.

Passar arguments mitjançant variables predeterminades:

Creeu un fitxer nou amb qualsevol nom mitjançant l'ordre tàctil, per exemple, file.sh.







$tocarnom de l'arxiu



Obriu aquest fitxer de nova creació i afegiu-hi un script bash. He afegit algunes variables per defecte, per exemple 1 $, 2 $ i 3 $ en conseqüència. Qualsevol argument que es passi pel terminal s’emmagatzemarà a les variables indicades.







Heu d'executar aquest fitxer mitjançant l'ordre ./ seguit d'alguns arguments. Com podeu veure a la imatge, quan vaig passar els arguments, es produeix un error: permís denegat. Això es deu al fet que aquest fitxer no té drets d’execució.

$./nom del fitxer argument1 argument2 argument

Així doncs, per concedir els drets d’execució d’aquest fitxer, utilitzeu l’ordre sudo chmod per fer-ho.



$suo chmod+ x nom del fitxer

Ara, torneu a executar el fitxer amb la mateixa comanda anterior. Aquesta vegada he aportat diferents arguments. Veureu que els arguments recentment aprovats s’emmagatzemen a les variables per defecte.

S'està passant el nom de l'script de l'intèrpret d'ordres com a argument:

Ara, utilitzant el mateix fitxer vell file.sh amb un petit canvi en les seves variables per defecte. Heu d'afegir la variable $ 0 a l'script com es mostra.

En executar la mateixa ordre ./ shell script, el nom del vostre script de shell, p. Ex. ./filename s’emmagatzemarà a la variable $ 0 com a argument.

Passar arguments com a matriu a variable:

Començant pel mateix fitxer file.sh, heu d'afegir algunes línies addicionals a l'script anterior. Declareu una variable anomenada matriu. Afegiu una variable per defecte [email protected] que emmagatzemarà els arguments introduïts per l'usuari com a matriu. Aquests arguments s’analitzaran a matriu variable. L'última línia mostrarà tots els arguments de la matriu de variables ordenats pel nombre d'índex.

Executeu l'script ./ shell. Veureu que mostrarà els arguments o valors emmagatzemats com a matriu a [correu electrònic protegit] analitzats a matriu variable, però no el nom de l'script de l'intèrpret d'ordres a la segona sentència d'eco. Tindreu la següent sortida.

$./nom del fitxer argument1 argument2 argument

Utilitzeu el mateix fitxer amb el mateix script. Només cal que elimineu $ {array [3]} de la darrera línia, tal com es mostra a la imatge.

Després d'executar l'ordre ./, veureu una sortida similar a la de l'exemple anterior sense cap canvi.

També podeu obtenir el mateix resultat substituint l’última línia de l’escriptura bash per una sola paraula. Només cal afegir [email protected] a la sentència echo i mostrarà els arguments presents en aquesta matriu de variables.

Per tant, executant l'ordre ./ de nou, obtindreu els mateixos resultats.

Comproveu el nombre total d'arguments aprovats:

Al contrari, si voleu saber el nombre total d’arguments que ha passat l’usuari, també podeu fer-ho. Per a aquest propòsit, només heu de substituir [email protected] per $ # en eco.

De nou executant l'ordre ./, ara veureu tota la xifra d'arguments passats a l'script. En el nostre cas, es passen 3 arguments com a valor.

Creació d'arguments de línia per línia:

Creeu un fitxer nou test.sh al directori inicial. Afegiu l'script bash tal com es mostra.

Ara executeu la mateixa comanda antiga amb arguments diferents. En primer lloc, veureu l’error: permís denegat.

Heu d'executar l'ordre chmod per atorgar privilegis sudo a aquest fitxer. Després, torneu a executar l'ordre ./ shell script. I obtindreu la sortida d'arguments ordenats línia per línia.

Limiteu la variable mitjançant el número d'índex d'argument:

Si voleu limitar la variable mitjançant el seu número d'índex, podeu fer-ho molt fàcilment. Afegiu claudàtors després del signe $ i afegiu el número d'índex d'argument que voleu mostrar abans que altres arguments.

Si els arguments proporcionats pels usuaris són inferiors al nombre d'índex proporcionat a la variable límit, obtindreu un valor d'argument buit. Com a instància, he proporcionat 4 arguments, però he donat el valor de l'argument 05 que es mostrarà. En aquesta situació, la variable es mostrarà buida perquè no s'ha passat el cinquè argument.

Però quan passeu el nombre igual o superior d'arguments a l'ordre, obtindreu el valor que es mostra al resultat tal com es mostra.

Comprovació d'arguments de valor específics:

Feu un fitxer nou amb el nom Check.sh al directori inicial. Afegiu el mateix script bash que es mostra a la imatge següent. En aquest script, tenim una variable var per emmagatzemar el valor de l'argument que ha passat l'usuari. Aleshores tenim una sentència if, que comprovarà si el valor de l’argument s’ha de fer coincidir o no. Si el valor de l’argument es fa coincidir amb el valor proporcionat al parèntesi, s’executarà la primera sentència de ressò. Si el valor no coincideix, s'executarà la segona sentència eco.

Quan executem l'ordre de shell script, generarà un error. Mitjançant l'ordre chmod, podem corregir aquest error.

Després d'això, executeu l'script de l'intèrpret d'ordres per al fitxer concret amb algun valor d'argument. En el nostre cas, hem proporcionat Aqsa com a valor d’argument, que és el mateix que el valor que es mostra al parèntesi. Per tant, l'script bash executarà la primera sentència de ressò tal com es mostra.

D'altra banda, si proporcioneu els diferents valors d'argument a l'script de l'intèrpret d'ordres, mostrarà l'altra sentència de ressò. Aquí he afegit Rimsha com a valor d'argument, que és diferent del valor proporcionat a la sentència if. Per tant, bash script executarà la segona sentència echo.

Conclusió:

Espero que aquesta guia us hagi ajudat prou per tenir un fort control sobre com passar arguments a variables per defecte, passar el valor de l’argument com una matriu a una variable, obtenir el nombre total d’arguments passats, sortida d’arguments línia per línia, limitar l’argument sortida utilitzant el número d'índex, comprovant l'argument de valor específic i molts més.