Come gestire gli argomenti della riga di comando in Bash?

Come Gestire Gli Argomenti Della Riga Di Comando In Bash



In Linux, utilizziamo gli argomenti della riga di comando come input per lo script bash. Bash può prendere questi argomenti della riga di comando in sequenza e analizzarli come opzione. Questi argomenti consentono di influenzare dinamicamente le azioni e l'output dello script.

È possibile configurare questi argomenti in modo diverso per influenzare l'input e l'output. Ecco perché la gestione degli argomenti della riga di comando in bash è essenziale, ma molti nuovi utenti devono imparare a farlo. Quindi in questa guida spiegheremo diversi modi per gestire gli argomenti della riga di comando in bash.







Come gestire gli argomenti della riga di comando in Bash?

Esistono vari modi per gestire gli argomenti della riga di comando in Bash, quindi diamo un'occhiata a loro per ottenere brevi informazioni:



La funzione getopt



La funzione getopt è utile in quanto fornisce le opzioni e la sintassi per definire e analizzare gli argomenti in bash. È una funzione integrata di Linux che puoi utilizzare durante la creazione di un file di database o di un report in un formato specifico basato sugli argomenti. La funzione getopt aiuta ad analizzare i brevi argomenti della riga di comando perché ci sono due tipi di argomenti:





  • Argomenti brevi: Questi sono gli argomenti a carattere singolo seguiti da un trattino. Ad esempio, -a, -l, -h, ecc., sono alcuni esempi di singoli argomenti.

  • Argomenti lunghi: Questi sono gli argomenti a più caratteri seguiti da un doppio trattino. Ci sono vari esempi di argomenti lunghi, come –all, –list, –help, ecc.

Facciamo un esempio in cui gestiremo gli argomenti della riga di comando utilizzando l'utilità getopt. Abbiamo creato uno script bash chiamato 'getopt.sh' che contiene le seguenti informazioni:



!/ bidone / bash

mentre getopts 'A:B:C:D:' particolari; fare

Astuccio ' $dettagli ' in

UN )

eco 'Il nome del cittadino è $OPTARG ' ;;

B )

eco 'La carta d'identità è $OPTARG ' ;;

C )

eco 'Il luogo di nascita è $OPTARG ' ;;

D )

eco 'L'occupazione è $OPTARG ' ;;

* )

Uscita 1 ;;

esac

fatto

spostare ' $(($OPZIONE -1) )'



Se [ ! -Insieme a $1 ] ; poi

eco 'Stato civile $ 1'

altro

eco 'Nessuna voce'

Uscita 1

essere



Se [ ! -Insieme a $2 ] ; poi

eco 'Membri della famiglia $ 2'

essere

Ora eseguiamo lo script con gli argomenti richiesti nell'input:

Come puoi vedere nell'immagine sopra, eseguiamo lo script solo con le funzioni getopt e quindi aggiungiamo argomenti normali per ottenere il risultato completo.

Utilizzo di flag

I flag non sono altro che singoli caratteri preceduti da trattini (-). Quando passiamo gli argomenti usando la funzione getopt, usiamo i flag. -a, -b, -c sono alcuni esempi di flag. Ad esempio, un copione richiede il nome, la carta d'identità, il luogo, l'età e l'occupazione di un cittadino. Quindi, abbiamo utilizzato i flag j, k, l, m, n, per definire simultaneamente il nome, l'ID, il luogo, l'età e l'occupazione del cittadino:

#!/bin/bash

Mentre getopts j:k:l:m:n: flag_info

fare

Astuccio ' ${flag_info} ' in
< ol >
< Quello > j ) citizenname = ${OPTARG} ;; Quello >
< Quello > K ) ID del cittadino = ${OPTARG} ;; Quello >
< Quello > l ) posto = ${OPTARG} ;; Quello >
< Quello > m ) età = ${OPTARG} ;; Quello >
< Quello > n ) occupazione = ${OPTARG} ;; Quello >
ol >
esac

fatto

eco 'Ecco i dettagli inseriti:'

eco 'Nome cittadino: $nomecittadino ' ;

eco 'ID del cittadino: $citizenid ' ;

eco 'Posto: $luogo ' ;

eco 'Età: $età ' ;

eco 'Occupazione: $occupazione ' ;

Lo script darà il seguente risultato nel terminale:

. /< copione > .sh -j Danny -K 476 -l Toronto -m 25 -n Autore

Usando [e-mail protetta] Con Passanti

Il ' [e-mail protetta] ” variabile non è altro che l'array di tutti gli argomenti di input. Possiamo passare qualsiasi numero di input usando il ' [e-mail protetta] ' variabile. È possibile utilizzare questa variabile come ciclo per scorrere gli argomenti. Il ' [e-mail protetta] ” allora la variabile torna utile; non conosci la dimensione dell'input e non puoi prendere gli argomenti posizionali. Quindi, puoi usare il ' [e-mail protetta] ” piuttosto che definire ripetutamente la funzione getopt. Ecco un esempio di utilizzo di loop e [e-mail protetta] insieme in una sceneggiatura:

#!/bin/bash

nessuno = ( “$ @ ' )



Se [ $# -gt 1 ]

poi



Inserisci =$ ( ( ${numero[0]} + ${numero[1]} ) )

eco 'L'addizione di tutti i numeri è: $aggiungi '



sottrazione =$ ( ( ${numero[0]} - ${numero[1]} - ${numero[2]} ) )

eco 'La sottrazione dei numeri è: $sottrazione '



moltiplicare =$ ( ( ${numero[0]} * ${numero[1]} * ${numero[2]} ) )

eco 'La moltiplicazione dei numeri è: $moltiplicare '



divisione1 =$ ( ( ${numero[0]} / ${numero[1]} ) )

eco 'Divisione del ${numero[0]} e ${numero[1]} è: $divisione1 '



divisione2 =$ ( ( ${numero[1]} / ${numero[2]} ) )

eco 'Divisione di ${numero[1]} e ${numero[2]} è: $divisione2 '



divisione3 =$ ( ( ${numero[0]} / ${numero[2]} ) )

eco 'Divisione di ${numero[0]} e ${numero[2]} è: $divisione2 '



essere

Lo script precedente esegue diversi calcoli aritmetici basati sugli argomenti della riga di comando. Ad esempio, abbiamo inserito 50, 35 e 15 come input:

Utilizzo dei parametri posizionali

Puoi accedere ai parametri posizionali mentre accedono prima a $1, poi a $2 e così via. Ad esempio, creiamo uno script che legga un nome come primo argomento e poi una città come secondo. Tuttavia, se passi prima la città e poi il nome, allora considera il nome come la città e viceversa. Facciamo un tuffo più profondo nel seguente script per comprendere questo concetto:

#!/bin/bash

eco 'Ecco i dati inseriti'

eco 'nome $1'

eco 'città $ 2'

Devi aggiungere il nome e la città al momento dell'esecuzione dello script nel terminale:

Avvolgendo

Questo è tutto ciò che devi sapere sui metodi per gestire gli argomenti della riga di comando in bash. Abbiamo spiegato diversi approcci che puoi provare con gli esempi appropriati. Ci sono vari comandi se vuoi aggiungere argomenti nello script. Quindi assicurati di visitare Linuxhint per saperne di più su di loro.