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 Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery, passa a CoddyKit PRO. Il corso Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery?
Non è richiesta alcuna esperienza precedente. Linux Command Line & Bash Scripting Mastery 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 Linux Command Line & Bash Scripting Mastery?
Sì. Ogni lezione Linux Command Line & Bash Scripting Mastery 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