0Pricing
Linux Command Line & Bash Scripting Mastery · Lezione

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 di IFS (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]"
done

Opzioni: 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 esempio f:.
  • variable: il nome di una variabile in cui getopts memorizzerà il carattere dell’opzione attualmente elaborata, ad esempio opt.

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
done

Controllo 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"
done

Se 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, $2 e così via per accedere direttamente agli argomenti.
  • Variabili speciali: $0 per 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 getopts per 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

  1. Strutture iterative (for, while)
  2. Funzioni negli script Bash
  3. Argomenti e opzioni degli script ($@, $#, getopts)
  4. L'istruzione case e il pattern matching
← Torna a Linux Command Line & Bash Scripting Mastery