Bash getopts

Bash getopts
A volte dobbiamo leggere gli argomenti e le opzioni della riga di comando negli script bash. Gli argomenti della riga di comando possono essere facilmente letti dalle variabili dell'argomento. Ma per leggere sia argomenti e opzioni della riga di comando, Bash ha usato un comando incorporato "getopts". Questo comando può essere utilizzato per analizzare brevi opzioni come "-a" o "-1" e lunghe opzioni come "-package-name". In questo tutorial il comando "getopts" può essere utilizzato per analizzare gli argomenti e le opzioni della riga di comando.

Sintassi:

Getopts Nome Optstring [Args]

Opzioni:

Alcune opzioni di getopts per lo più usate sono menzionate qui.

Etichetta Descrizione
-o o -opzioni Identificare l'opzione di un personaggio.
-l o -longoptions Identifica le opzioni multi-character.
-n o -name Errori di segnalazione provenienti dal comando getopts
-Q o -quiet Disabilita il report di errore
-T o -test Test versione getopts
-A o -alternativo Consenti un'opzione lunga con singolo '-'

Esempio-1: usando un singolo opzione

Questo esempio mostra l'uso molto semplice del comando getopts. Crea un file bash chiamato 'getopts1.Sh 'con il seguente codice per testare il codice. Qui, mentre loop continuerà per l'opzione del comando getopts. L'istruzione Case controllerà l'opzione. Se l'opzione è "C", lo script stamperà "Il mio colore preferito è blu". Se l'opzione è "F", lo script stamperà "Il mio cibo preferito è il gelato". Se l'opzione è "-m", la sceneggiatura stamperà "Il mio film preferito è Titanic". Per qualsiasi altro valore di opzione, "devi usare: [-c] o [-f] o [-m]".

#!/Bin/Bash
# Leggi l'opzione e memorizza nella variabile, $ opzione
mentre l'opzione "CFM" di getopts; Fare
case $ opzione in
c) #per l'opzione c
Echo "Il mio colore preferito è blu"
;;
f) #For Opzione f
Echo "Il mio cibo preferito è il gelato"
;;
m) #for opzione m
Echo "Il mio film preferito è Titanic"
;;
\? ) #For Opzione non valida
echo "devi usare: [-c] o [-f] o [-m]"
;;
Esac
Fatto

Esegui lo script usando quattro opzioni, '-c', '-f', '-m' e '-k'.

$ bash getopts1.sh -c
$ bash getopts1.sh -f
$ bash getopts1.sh -m
$ bash getopts1.sh -k

Produzione:

Esempio-2: usando l'opzione con un singolo argomento

Questo esempio mostra l'uso del comando getopts con un argomento. Crea un file bash chiamato 'getopts2.Sh 'con il seguente codice per testare il codice. Qui, ":" viene usato con "P" per definire che il comando sosterrà l'opzione. Lo script stamperà il valore dell'argomento con altre stringhe se l'opzione argomentazione "-p" fornisce in fase di esecuzione. Se qualsiasi opzione fornirà piuttosto che '-p', mostrerà un messaggio di errore con valore di opzione. Se l'opzione '-P' fornirà senza alcun argomento, un altro messaggio di errore verrà stampata.

#!/Bin/Bash
mentre gettopts "p:" opt; Fare
case $ opt in
p) #print il valore dell'argomento
Echo "Mi piace la programmazione $ optarg"
;;
\? )
Errore dell'opzione #print
echo "opzione non valida: $ optarg" 1> & 2
;;
:)
Errore argomento #print
Echo "Opzione non valida: $ optarg richiede un argomento" 1> & 2
;;
Esac
Fatto

Esegui lo script con l'opzione -P e il valore dell'argomento 'Bash', con solo opzione -P e con l'opzione -t.

$ bash getopts2.Sh -p Bash
$ bash getopts2.sh -p
$ bash getopts2.sh -t

Produzione:

Esempio-3: utilizzando l'opzione con più argomenti

Questo esempio mostra gli usi del comando getopts con più argomenti. Crea uno script bash denominato GrTopts3.Sh con il seguente codice per testare lo script. Secondo lo script, i valori degli argomenti separati da virgola saranno forniti dalla riga di comando.

Qui, l'opzione '-f' e la variabile IFS vengono utilizzate per dividere gli argomenti e memorizzata in un array, $ NUMARR. Se gli argomenti separati da virgoleranno, stamperanno il numero totale di argomenti. Due opzioni supporteranno il comando. La somma dei valori dell'argomento verrà calcolata e stampata se "-a" l'opzione fornirà gli argomenti. La moltiplicazione dei valori dell'argomento verrà calcolata e stampata se l'opzione '-m' fornirà gli argomenti.

#!/Bin/Bash
mentre gettopts "a: m:" opt; Fare
set -f; Ifs = ','
NUMARR = ($ 2)
Echo "Numero totale di argomenti = $ #numarr [@]"
Caso $ opt in
a) risultato = 0
per i in "$ numarr [@]"; Fare
((risultato = $ risultato+$ i))
Fatto
Echo "La somma di tutti gli argomenti = $ risultato" ;;
M) risultato = 1
per i in "$ numarr [@]"; Fare
((risultato = $ risultato*$ i))
Fatto
Echo "La moltiplicazione di tutti gli argomenti = $ risultato" ;;
*) echo "opzione o argomento non valido"
Uscita 1
Esac
Fatto

Esegui le script con l'opzione '-A' e tre argomenti, con l'opzione '-m' e tre argomenti e l'opzione '-t' senza alcun argomento.

$ bash getopts3.SH -A 3,2,5
$ bash getopts3.SH -M 3,2,5
$ bash getopts3.sh -t

Produzione:

Esempio-4: utilizzando più opzioni e argomenti

Questo esempio mostra l'uso del comando getopts con più opzioni e più argomenti. Crea un file bash chiamato 'getopts4.Sh con il seguente codice per testare l'esempio. Qui, due opzioni funzionano con due argomenti separatamente. Se nessuna delle opzioni fornirà, allora stamperà un messaggio di errore.

#!/Bin/Bash
mentre gettopts "n: m:" opt; Fare
Caso $ opt in
N)
#Leggi il primo argomento
Echo "Il nome dello studente è $ optarg"> & 2
;;
M)
#Leggi il secondo argomento
echo "e i marchi sono $ optarg"> & 2
;;
*)
#Messaggio di errore di stampa
echo "opzione o argomento non valido $ optarg"
;;
Esac
Fatto

Quando lo script verrà eseguito dall'opzione '-n' con l'opzione 'Ella' e '-m' con 85, allora due istruzioni casi saranno vere e stampano due output. Quando lo script verrà eseguito solo con l'opzione '-n' con 'Ella', solo una dichiarazione del caso sarà vera e stampare un output. Quando lo script è eseguito dall'opzione '-P', verrà stampata un messaggio di errore.

$ bash getopts4.sh -n ella -m 85
$ bash getopts4.sh -n ella
$ bash getopts4.sh -p ella

Conclusione

Gli usi di base del comando "getopts" sono mostrati in questo tutorial usando gli esempi sopra. Spero, dopo aver praticato questo tutorial, sarai in grado di utilizzare le opzioni e gli argomenti della riga di comando nel tuo script bash.