Argomenti della riga di comando

Argomenti della riga di comando
In molti casi, gli script bash richiedono i valori degli argomenti per fornire opzioni di input allo script. È possibile gestire gli argomenti della riga di comando in uno script bash in due modi. Uno è usando Variabili di argomento, e un altro è usando i getopts funzione. Come puoi gestire gli argomenti della riga di comando è mostrato in questo tutorial.

Usando le variabili dell'argomento:

La variabile dell'argomento parte da $ 0. Il nome del file di script principale è archiviato in $ 0, che riceve i valori degli argomenti dagli argomenti della riga di comando. Se due argomenti vengono passati nella riga di comando, quindi in sequenza, i valori dell'argomento verranno ricevuti in variabili da $ 1 e $ 2.

Esempio -1: Invio di tre valori numerici negli argomenti della riga di comando

Crea un file bash con il seguente script. Lo script riceverà valori a tre argomenti e li memorizzerà in variabili $ 1, $ 2 e $ 3. Conterà il numero totale di argomenti e stampano i valori degli argomenti usando un loop senza un loop. La somma di tutti i valori dell'argomento verrà stampata in seguito.

#!/Bin/Bash
# Conteggio del numero totale di argomenti
Echo "Numero totale di argomenti: $#"
# Leggere i valori degli argomenti individualmente
Echo "First Argomento Value: $ 1"
Echo "Valore dell'argomento secondo: $ 2"
Echo "Terzo valore di argomento: $ 3"
# Leggere i valori degli argomenti usando loop
Per Argval in "$@"
Fare
echo -n "$ argval"
Fatto
# Aggiunta di valori degli argomenti
Sum = $ (($ 1+$ 2+$ 3))
# stampa il risultato
echo -e "\ nresult of Sum = $ Sum"

Verrà visualizzato il seguente output dopo aver eseguito il file di script con tre valori di argomenti numerici, 50, 35 e 15.

$ bash cmdline1.Sh 50 35 15

Esempio -2: prendere il nome file come argomento

Crea un file bash con il seguente script per contare il numero totale di caratteri di qualsiasi file. Qui, il nome file verrà approvato come argomento di comando.

#!/Bin/Bash
nome file = $ 1
TotalChar = 'wc -c $ nome file'
Echo "Il numero totale di caratteri è $ totalchar"

Esegui lo script bash con il nome file come valore di un singolo argomento ed esegui un altro comando per verificare il numero totale di caratteri di quel file. Qui, i giorni feriali.Il file txt viene utilizzato come valore dell'argomento. Il numero totale di caratteri nei giorni feriali.Il file txt è 57.

$ bash cmdline2.giorni feriali SH.TXT
$ wc -c giorni feriali.TXT

Utilizzando la funzione getopts:

Se si desidera archiviare i dati nel database o in qualsiasi file o creare un report in un formato particolare in base ai valori degli argomenti della riga di comando, allora il getopts La funzione è l'opzione migliore per eseguire l'attività. È una funzione Linux incorporata. Quindi, puoi facilmente utilizzare questa funzione nel tuo script per leggere i dati formattati dalla riga di comando.

Esempio -3: Lettura degli argomenti della funzione getopts

Crea un file bash con il seguente script per comprendere l'uso del getopts funzione. La funzione "getopts" viene utilizzata con un ciclo while per leggere le opzioni degli argomenti della linea di comando e i valori degli argomenti. Qui vengono utilizzate 4 opzioni che sono 'I', 'n', 'm' E 'E'. L'istruzione Case viene utilizzata per abbinare l'opzione particolare e archiviare il valore dell'argomento in una variabile. Infine, stampare i valori della variabile.

#!/Bin/Bash
mentre gettopts ": i: n: m: e:" arg; Fare
Caso $ arg in
i) id = $ optarg ;;
n) nome = $ optarg ;;
m) Manufacturing_date = $ optarg ;;
e) scadere_date = $ optarg ;;
Esac
Fatto
echo -e "\ n $ id $ name $ producturing_date $ scadere_date \ n"

Esegui il file con le seguenti opzioni e valori degli argomenti. Qui, P100 è il valore dell'opzione -i, 'Torta calda"È il valore dell'opzione -n,"01-01-2021"È il valore dell'opzione -m e"06-01-2021'è il valore dell'opzione -e.

$ bash cmdline3.sh -i p001 -n 'hot torta' -m '01 -01-2021 '-e '06 -01-2021'

Quando è necessario inviare valori semplici in uno script, è meglio usare le variabili di argomento. Ma se si desidera inviare dati in modo formattato, è meglio utilizzare la funzione getopts per recuperare i valori degli argomenti. Gli usi di entrambe le variabili dell'argomento e le opzioni getopts hanno mostrato nel prossimo esempio.

Esempio-4: leggere argomenti normali e argomenti con opzioni getopts

I modi per leggere gli argomenti della riga di comando usando le variabili degli argomenti e le opzioni di getopts sono stati mostrati separatamente negli esempi precedenti di questo tutorial. Ma questi due modi possono essere usati in un singolo script per leggere i valori degli argomenti della riga di comando. Crea uno script bash con il seguente codice per leggere i valori dell'argomento della riga di comando passati da Opzioni GetOpts e parametri dell'argomento. Qui, sono state utilizzate tre opzioni di getopts per leggere il nome host, il nome utente e la password della riga di comando. Successivamente, il comando Maiusc è stato utilizzato per rimuovere tutte le opzioni GetOpts dal comando per leggere i valori della riga di comando usando le variabili dell'argomento. Questo script leggerà e stampa un massimo di tre valori delle variabili dell'argomento. Se non verrà dato alcun valore di argomento senza opzione dopo l'esecuzione del codice, verrà stampato un messaggio; Altrimenti, i valori della variabile dell'argomento verranno stampati.

#!/Bin/Bash
# Lettura di argomenti con opzioni getopts
mentre Getopts 'H: u: p:' opzione; Fare
Caso "$ opzione" in
H)
# Nome host di stampa
echo "Il nome host è $ optarg" ;;
u)
# Stampa il nome utente
echo "Il nome utente è $ optarg" ;;
P)
# Stampa password
echo "La password è $ optarg" ;;
*)
# Stampa un messaggio di aiuto per fornire opzioni sbagliate
Echo "Utilizzo: $ 0 [-h Value] [-u Value] [-p Value]"> & 2
# Termina dallo script
uscita 1 ;;
Esac
Fatto
# Rimuovi tutte le opzioni passate da GetOpts Opzioni
Shift "$ (($ optind -1))"
# Leggendo i primi argomenti normali
Se [ ! -z $ 1]; Poi
echo "Il primo nome della tabella è $ 1"
altro
echo "non viene fornito alcun argomento normale."
Uscita 1
fi
# Leggendo il secondo argomenti normali
Se [ ! -z $ 2]; Poi
echo "Il nome della seconda tabella è $ 2"
fi
# Leggendo il terzo argomenti normali
Se [ ! -z $ 3]; Poi
Echo "Il nome della terza tabella è $ 3"
fi

Verrà visualizzato il seguente output se l'opzione sbagliata viene fornita al momento dell'esecuzione del codice. Qui, l'opzione -a non esiste nello script.

Verrà visualizzato il seguente output se le opzioni valide con i valori sono riportate nella riga di comando al momento dell'esecuzione del codice.

Verrà visualizzato il seguente output se le opzioni valide e i valori degli argomenti normali vengono utilizzati nella riga di comando al momento dell'esecuzione del codice. Qui, gli argomenti normali sono cliente E dipendente.

Utilizzando '$@' per leggere gli argomenti della riga di comando:

Gli argomenti della riga di comando possono essere letti senza usare le variabili dell'argomento o le opzioni getopts. Usando '$@'Con la prima parentesi è un altro modo per leggere tutti i valori degli argomenti della riga di comando.

Esempio-5: lettura dei valori dell'argomento della riga di comando senza variabile

Crea un file bash con il seguente script per leggere i valori degli argomenti senza alcuna variabile argomento e calcolare la somma di tre valori di argomentazione della riga di comando. "$@" È stato usato con le prime parentesi qui per leggere tutti i valori degli argomenti in un array. Successivamente, verrà stampata la somma dei primi tre valori di array.

#!/Bin/Bash
# Leggi tutti i valori degli argomenti
argvals = ("$@")
# Controlla il numero totale di argomenti
if [$# -gt 2]
Poi
# Calcola la somma di tre argomenti della riga di comando
sum = $ (($ argvals [0]+$ argvals [1]+$ argvals [2]))
Echo "La somma di 3 argomenti di comando è $ somma"
fi

Il seguente output apparirà dopo aver eseguito lo script sopra per i valori dell'argomento 12, 20 e 90. La somma di questi numeri è 122.

Conclusione:

I modi per fornire i valori degli argomenti della riga di comando senza alcuna opzione e con le opzioni hanno mostrato qui. Il modo per leggere i valori degli argomenti della riga di comando senza usare le variabili ha mostrato anche qui. Spero che questo tutorial aiuterà i lettori a utilizzare i valori degli argomenti della riga di comando correttamente nel loro script bash.