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 di comando in sequenza e analizzarli come un'opzione. Questi argomenti consentono di influenzare le azioni e l'output dello script dinamicamente.

È 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 linea di comando in Bash.

Come gestire gli argomenti della riga di comando in bash?

Esistono vari modi per gestire gli argomini della riga di comando in bash, quindi diamo un'occhiata 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 è possibile utilizzare durante la creazione di un file di database o report in un formato specifico in base agli argomenti. La funzione Getopt aiuta a analizzare gli argomenti di linea di comando corti perché ci sono due tipi di argomenti:

  • Brevi argomenti: Questi sono gli argomenti a caratteri singoli seguiti da un trattino. Ad esempio, -a, -l, -h, ecc., sono alcuni esempi di singoli argomenti.
  • Argomenti lunghi: Questi sono gli argomenti multi-character seguiti da un doppio a. Esistono vari esempi di lunghi argomenti, come -all, - -list, -help, ecc.

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

!/Bin/Bash
mentre i dettagli di Getopts 'A: B: C: D:'; Fare
Caso "$ dettagli" in
UN)
echo "Il nome cittadino è $ optarg" ;;
B)
echo "ID cittadino è $ optarg" ;;
C)
Echo "Il luogo di nascita è $ optarg" ;;
D)
Echo "L'occupazione è $ optarg" ;;
*)
uscita 1 ;;
Esac
Fatto
Shift "$ (($ optind -1))"
Se [ ! -z $ 1]; Poi
Echo "Stato civile $ 1"
altro
Echo "nessuna visione"
Uscita 1
fi
Se [ ! -z $ 2]; Poi
Echo "familiari $ 2"
fi

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

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

Usando bandiere

Le bandiere non sono altro che singoli caratteri preceduti dai trattini (-). Quando passiamo gli argomenti usando la funzione getopt, utilizziamo flags. -a, -b, -c sono alcuni esempi di bandiere. Ad esempio, uno script richiede il nome, l'ID, il luogo, l'età e l'occupazione di un cittadino. Quindi, abbiamo usato le bandiere J, K, L, M, N, per definire contemporaneamente il nome, l'ID, il luogo, l'età e l'occupazione del cittadino:

#!/Bin/Bash
Mentre gettopts j: k: l: m: n: flag_info
Fare
case "$ flag_info" in

  1. j) cittadino = $ optarg ;;

  2. k) cittadino = $ optarg ;;

  3. l) place = $ optarg ;;

  4. m) age = $ optarg ;;

  5. n) occupazione = $ optarg ;;


Esac
Fatto
echo "Ecco i dettagli inseriti:"
echo "Nome cittadino: $ cittadini";
Echo "Citizen ID: $ cittadenid";
Echo "Place: $ Place";
Echo "Age: $ Age";
Echo "occupazione: $ occupazione";

Lo script darà il seguente risultato nel terminale:

.//

Usando $@ con loop

La variabile "$@" non è altro che l'array di tutti gli argomenti di input. Possiamo passare un numero qualsiasi di input usando la variabile "$@". È possibile utilizzare questa variabile come ciclo per iterare attraverso gli argomenti. La variabile "$@" è utile allora; Non conosci la dimensione dell'input e non puoi prendere gli argomenti posizionali. Quindi, puoi usare il "$@" anziché definire la funzione Getopt ancora e ancora. Ecco un esempio di utilizzo di loop e $@ insieme in uno script:

#!/Bin/Bash
num = ("$@")
if [$# -gt 1]
Poi
add = $ (($ num [0]+$ num [1]))
Echo "L'aggiunta di tutti i numeri è: $ ADD"
subtraction = $ (($ num [0]-$ num [1]-$ num [2]))
Echo "La sottrazione dei numeri è: $ sottraction"
multiply = $ (($ num [0]*$ num [1]*$ num [2]))
Echo "La moltiplicazione dei numeri è: $ moltiplica"
Division1 = $ (($ num [0]/$ num [1]))
Echo "Division of the $ num [0] e $ num [1] è: $ Division1"
Division2 = $ (($ num [1]/$ num [2]))
Echo "Divisione di $ num [1] e $ num [2] è: $ division2"
Division3 = $ (($ num [0]/$ num [2]))
Echo "Divisione di $ num [0] e $ num [2] è: $ division2"
fi

Lo script sopra esegue diversi calcoli aritmetici in base agli argomenti della riga di comando. Ad esempio, abbiamo inserito 50, 35 e 15 come input:

Utilizzo dei parametri posizionali

Puoi accedere ai parametri posizionali poiché accedono prima $ 1, quindi $ 2 e così via. Ad esempio, creiamo uno script che legge un nome come il primo argomento e poi una città come la seconda. Tuttavia, se si passa prima la città e poi il nome, allora considera il nome come la città e viceversa. Facciamo un tuffo più profondo nella seguente sceneggiatura per capire questo concetto:

#!/Bin/Bash
echo "Ecco i dettagli inseriti"
Echo "Nome $ 1"
Echo "City $ 2"

È necessario 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 si desidera aggiungere argomenti nello script. Quindi assicurati di visitare Linuxhint per saperne di più su di loro.