0Pricing
DevOps Bootcamp · 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 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 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 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

  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 DevOps Bootcamp