Argomenti e opzioni degli script ($@, $#, getopts)
Impari a passare argomenti agli script e ad analizzare le opzioni della riga di comando usando variabili speciali e «getopts».
Argomenti e opzioni degli script ($@, $#, getopts) è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.
Argomenti degli script: perché usarli?
Ha mai usato un comando come ls -l o cp file1 file2? -l, file1 e file2 sono tutti argomenti! Indicano al comando cosa fare o su cosa agire.
Nello scripting Bash, gli argomenti rendono gli script flessibili. Invece di codificare i valori direttamente nello script, è possibile accettare l’input direttamente dalla riga di comando al momento dell’esecuzione.
Accesso agli argomenti posizionali
Quando si esegue uno script con degli argomenti, Bash li assegna automaticamente a variabili speciali chiamate parametri posizionali.
- Il primo argomento è
$1. - Il secondo argomento è
$2. - E così via, fino a
$9.
Per gli argomenti oltre il nono, si usano le parentesi graffe, ad esempio ${10}, ${11} e così via. Queste variabili contengono i valori passati allo script.
Dimostrazione: argomenti posizionali
Vediamo come accedere a questi argomenti in uno script. Salvi questo contenuto come greet.sh ed esegua lo script con ./greet.sh Alice Bob.
#!/bin/bash
echo "Hello, $1!"
echo "Welcome, $2."
echo "The third argument (if any) is: $3"`$0` e `$#`: informazioni sullo script
Bash mette a disposizione altre variabili speciali che forniscono informazioni sullo script stesso e sui suoi argomenti:
$0: contiene il nome dello script in esecuzione. È utile per i messaggi di errore o per il logging.$#: contiene il numero totale di argomenti posizionali passati allo script.
Queste variabili contribuiscono a rendere gli script più robusti e facili da usare.
Dimostrazione: `$0` e `$#`
Esegua questo script con numeri diversi di argomenti, ad esempio ./info.sh one two three oppure semplicemente ./info.sh.
#!/bin/bash
echo "Script name: $0"
echo "Number of arguments received: $#"`$@` contro `$*`: tutti gli argomenti
A volte è necessario fare riferimento a tutti gli argomenti contemporaneamente. Bash offre due possibilità:
$@: si espande in argomenti separati. Se racchiuso tra virgolette doppie ("$@"), ogni argomento rimane una parola distinta, anche se contiene spazi. In genere è la scelta preferita nei cicli.$*: si espande in un’unica stringa contenente tutti gli argomenti. Se racchiuso tra virgolette doppie ("$*"), tutti gli argomenti vengono combinati in un’unica parola, separati dal primo carattere diIFS(Internal Field Separator, separatore interno dei campi, solitamente uno spazio).
Quando itera sugli argomenti, usi sempre "$@" per preservare gli spazi!
Dimostrazione: iterazione con `"$@"`
Questo script mostra come "$@" gestisca correttamente gli argomenti contenenti spazi. Lo esegua nel modo seguente: ./loop_args.sh hello "world wide" web
#!/bin/bash
echo "Processing arguments with \"$@\":"
for arg in "$@"; do
echo " Argument: [$arg]"
done
echo "\nProcessing arguments with \"$*\":"
for arg in "$*"; do
echo " Argument: [$arg]"
doneOpzioni: oltre gli argomenti posizionali
Gli argomenti posizionali sono ottimi nei casi semplici, ma cosa succede se lo script richiede flag opzionali o parametri con nome, come -v per la modalità dettagliata o -f filename?
È qui che entrano in gioco le opzioni della riga di comando. Rendono gli script più flessibili e facili da usare, consentendo agli utenti di specificare le impostazioni in qualsiasi ordine.
Bash mette a disposizione il comando getopts proprio per analizzare questi tipi di opzioni.
Sintassi di `getopts`: `optstring`
La sintassi di base per getopts è: getopts optstring variable.
optstring: una stringa di caratteri che rappresentano le opzioni valide. Se un’opzione richiede un argomento, come-f filename, si aggiungono i due punti dopo il carattere, ad esempiof:.variable: il nome di una variabile in cuigetoptsmemorizzerà il carattere dell’opzione attualmente elaborata, ad esempioopt.
getopts imposta inoltre OPTARG per gli argomenti delle opzioni e OPTIND per l’indice dell’argomento successivo.
Dimostrazione: `getopts` di base
Questo script elabora le opzioni -v (modalità dettagliata) e -f (file). Provi a eseguirlo: ./options.sh -v -f mydata.txt -x oppure ./options.sh -vf mydata.txt
#!/bin/bash
while getopts "vf:" opt; do
case $opt in
v)
echo "Verbose mode enabled."
;;
f)
echo "File specified: $OPTARG"
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
doneControllo rapido: variabili degli argomenti
Consideri il seguente script e il modo in cui viene eseguito:
#!/bin/bash
echo "Script: $0"
echo "Count: $#"
for arg in "$@"; do
echo "Arg: $arg"
doneSe esegue: ./myscript.sh "Hello World" 123
Quale sarebbe l’output?
Riepilogo: argomenti e opzioni
Ottimo lavoro! Ha imparato a rendere gli script Bash molto più versatili:
- Argomenti posizionali: usi
$1,$2e così via per accedere direttamente agli argomenti. - Variabili speciali:
$0per il nome dello script,$#per il numero di argomenti e"$@"per iterare in modo sicuro su tutti gli argomenti. - Opzioni della riga di comando: usi
getoptsper analizzare le opzioni con nome, come-v, e i relativi argomenti, come-f filename, rendendo gli script più robusti e facili da usare.
Si eserciti a usare questi elementi nei Suoi script per creare potenti strumenti da riga di comando flessibili!
Domande Frequenti
La lezione «Argomenti e opzioni degli script ($@, $#, getopts)» è gratuita?
Sì — il testo completo di «Argomenti e opzioni degli script ($@, $#, getopts)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.
Cosa imparerò in «Argomenti e opzioni degli script ($@, $#, getopts)»?
Impari a passare argomenti agli script e ad analizzare le opzioni della riga di comando usando variabili speciali e «getopts». Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare DevOps Bootcamp?
Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Argomenti e opzioni degli script ($@, $#, getopts)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?
Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Strutture iterative (for, while)
- Funzioni negli script Bash
- Argomenti e opzioni degli script ($@, $#, getopts)
- L'istruzione case e il pattern matching