Com gestionar els arguments de la línia d'ordres en un script Bash

How Handle Command Line Arguments Bash Script



En molts casos, els scripts bash requereixen valors d'argument per proporcionar opcions d'entrada a l'script. Podeu gestionar arguments de línia d'ordres en un script bash de dues maneres. Un és utilitzar variables d'argument i una altra és mitjançant l'ús getopts funció. En aquest tutorial es mostra com podeu gestionar els arguments de la línia d’ordres.

Utilitzant variables d'argument:

La variable argument comença a partir de $ 0. El nom del fitxer de seqüència principal s'emmagatzema a $ 0 que rep els valors dels arguments dels arguments de la línia d'ordres. Si es passen dos arguments a la línia d'ordres, els valors dels arguments es rebran de manera seqüencial en $ 1 i $ 2 variables.







Exemple -1: enviament de tres valors numèrics com a arguments

Creeu un fitxer bash i afegiu el codi següent. El script rebrà tres valors d'argument i s'emmagatzemarà en $ 1, $ 2 i $ 3. Comptarà el nombre total d'arguments, imprimirà els valors dels arguments amb bucle i sense bucle. Per últim, imprimiu la suma de tots els valors dels arguments.



#! / bin / bash

# Comptant el nombre total d'arguments
trobo 'Nombre total d'arguments: $ #'

# Lectura de valors argumentals individualment
trobo 'Valor del primer argument: $ 1'
trobo Valor del segon argument: 2 $
trobo 'Valor del tercer argument: 3 dòlars'

# Lectura de valors d'argument mitjançant bucle
perargvaldins '[email protected]'
fer
trobo -n '$ argval'
fet

# Afegint valors d'arguments
suma= $(($ 1+$ 2+$ 3))

# imprimeix el resultat
trobo -I ' nResultat de la suma =$ suma'

Executeu el fitxer bash amb tres valors d'arguments numèrics.



$bashcmdline1.sh50 35 15





Exemple -2: prendre el nom del fitxer com a argument

Creeu un fitxer bash i afegiu el codi següent per comptar el nombre total de caràcters de qualsevol fitxer. Aquí, el nom del fitxer es passarà com a argument de línia d'ordres.

#! / bin / bash
nom de l'arxiu=$ 1
totalchar=`wc -c $ nom de fitxer`
trobo 'El nombre total de caràcters són$ totalchar'

Executeu l'script bash amb el nom del fitxer com a valor d'argument únic i executeu una altra ordre per comprovar el nombre total de caràcters d'aquest fitxer. Aquí s’utilitza el fitxer employee.txt com a valor d’argument. El nombre total de caràcters del fitxer employee.txt és de 204.



$bashcmdline2.sh employee.txt
$wc -cempleat.txt

Utilitzant la funció getopts:

Si voleu emmagatzemar dades a la base de dades o a qualsevol fitxer o crear un informe en un format concret basat en valors d'arguments de línia d'ordres getopts funció és la millor opció per fer la tasca. És una funció Linux integrada. Per tant, podeu utilitzar fàcilment aquesta funció al vostre script per llegir dades formatades des de la línia d’ordres.

Exemple -1: llegir arguments mitjançant la funció getopts

Creeu un fitxer bash i afegiu el següent script per entendre l’ús de getopts funció. La funció ‘getopts’ s’utilitza amb mentre el bucle permet llegir les opcions i els valors de l’argument de la línia d’ordres. Aquí s’utilitzen 4 opcions que són 'Jo', 'n', 'm' i 'I' . La sentència case s'utilitza per fer coincidir l'opció concreta i emmagatzemar el valor de l'argument en una variable. Finalment, imprimiu els valors de la variable.

#! / bin / bash
mentre getopts ': i: n: m: e:'enfadat;fer
Caixa $ arg dins
jo) Identificació=$ OPTARG;;
n) Nom=$ OPTARG;;
m) Data de fabricació=$ OPTARG;;
I) Data d'expiració=$ OPTARG;;
esac
fet
trobo -I ' n$ ID $ Nom $ Data de fabricació $ Data de caducitat n'

Executeu el fitxer amb les opcions i valors d'argument següents. Aquí, p100 és el valor de l'opció -i, 'Hot Cake' és el valor de l'opció -n, '01 -01-2018 'és el valor de l'opció -m i '06 -01-2018' és el valor de - e opció.

$bashcmdline3.sh-ip001-n 'Pastís calent' -m '01 -01-2018 ' -I '06 -01-2018 '

Quan cal enviar valors simples en un script, és millor utilitzar variables d'argument. Però si voleu enviar dades de forma formatada, és millor utilitzar la funció getopts per recuperar valors d'arguments. Per obtenir més informació, vegeu el vídeo !