Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "leon-wells/ParsingDellaRigaDiComando"
Differenze tra le versioni 35 e 36
Versione 35 del 14/11/2021 11.00.11
Dimensione: 5895
Autore: leon-wells
Commento:
Versione 36 del 14/11/2021 12.39.48
Dimensione: 6343
Autore: leon-wells
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 36: Linea 36:
== Pregi del comando getopt == == Pro del comando getopt ==
Linea 38: Linea 38:
== Difetti del comando getopt == == Contro del comando getopt ==
Linea 45: Linea 45:
== Pregi del comando getopts == == Pro del comando getopts ==
Linea 54: Linea 54:
== Difetti del comando getopts == == Contro del comando getopts ==
Linea 59: Linea 59:
Per il suo funzionamento, ''getopts'' usa le seguenti variabili
||<tablestyle="width:60%;" rowstyle="background-color: #cccccc;" :5%>'''Variabile''' ||<:70%>'''Descrizione''' ||
||<:> OPTIND || Contiene l'indice del parametro posizionale del prossimo argomento da processare. È il modo in cui ''getopts'' tiene traccia del proprio stato ed è utile per poter fare uno shift dei parametri posizionali, dopo averli analizzati con ''getopts''- ||
||<:> OPTARG || Viene impostata al valore dell'argomento relativo a ogni parametro trovato da ''getopts''. Se l'opzione passata è sconosciuta, viene impostato al valore dell'opzione.||
||<:> OPTERR || È una variabile di bash che può assumere il valore 1 o 0, a seconda che si desideri o meno che la shell mostri il messaggio d'errore generato automaticamente da ''getopts''. Di default è impostata ad 1. Non è supportata in shell quali ksh93, mksh, zsh, or dash.||
=== Sintassi di ''getopts'' ===
Linea 69: Linea 64:
||<tablestyle="width:60%;" rowstyle="background-color: #cccccc;" :5%>'''Parametro''' ||<:70%>'''Descrizione''' || ||<tablestyle="width:60%;" rowstyle="background-color: #cccccc;" :5%>'''Parametro''' ||<:>'''Descrizione''' ||
Linea 73: Linea 68:

Per il suo funzionamento, ''getopts'' usa le seguenti variabili
||<tablestyle="width:60%;" rowstyle="background-color: #cccccc;" :5%>'''Variabile''' ||<:>'''Descrizione''' ||
||<:> OPTIND || È una variabile della shell, che contiene l'indice del parametro posizionale del prossimo argomento da processare. Viene modificata da ''getopts'', che la usa per tenere traccia del proprio stato. Torna utile anche per poter fare uno shift dei parametri posizionali, dopo averli analizzati con ''getopts''. ||
||<:> OPTARG || Viene impostata al valore dell'argomento relativo a ogni parametro trovato da ''getopts''. Se l'opzione passata è sconosciuta, viene impostato al valore dell'opzione.||
||<:> OPTERR || È una variabile di bash che può assumere il valore 1 o 0, a seconda che si desideri o meno che la shell mostri il messaggio d'errore generato automaticamente da ''getopts''. Di default è impostata ad 1. Non è supportata in shell quali ksh93, mksh, zsh, or dash.||

||<tablestyle="width:60%;" rowstyle="background-color: #cccccc;" :30%>'''Modalità verbosa''' ||<:70%> ||
||optstring || È una stringa che istruisce il comando ''getopts'' relativamente a quali opzioni aspettarsi e quando siano previsti i relativi parametri.||

||<tablestyle="width:60%;" rowstyle="background-color: #cccccc;" :5%>'''Modalità silenziosa''' ||


Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Prima di vedere nel dettaglio gli strumenti che le varie shell disponibili su Ubuntu forniscono per fare il parsing della riga di comando, è utile fare una breve introduzione per capire alcuni concetti fondamentali.

Facendo riferimento al comando tar, un modo generico per lanciare questo comando nel terminale è dato da:

tar -cv -f mioArchivio.tar directoryDaArchiviare

Il comando è composto da una serie di stringhe dette argomenti. Il primo argomento è il nome stesso del comando, mentre i successivi sono indicati con il nome di parametri posizionali.
Questi ultimi possono essere suddivisi in alcune categorie logiche:

  • una opzione è un argomento, generalmente incluso nella documentazione del comando, la cui presenza modifica il comportamento del comando stesso.
    Una opzione può esistere nella versione corta, che consiste in un trattino seguito da una singola lettera (ad esempio, '-f' nel comando precedente), o nella versione lunga. Di quest'ultima, si hanno due formati: nello stile GNU si ha un doppio trattino seguito da una serie di due o più lettere (ad esempio '--help'); lo stile XF86 ha un singolo trattino come prefisso (ad esempio '-verbose').
    Più opzioni corte possono essere raggruppate in un singolo argomento (ad esempio, '-cv' nel comando precedente).

  • un parametro è un argomento che può fornire informazioni aggiuntive al comando o a un'opzione a cui si riferisce. Nel comando precedente, 'mioArchivio.tar' è un parametro dell'opzione '-f', mentre 'directoryDaArchiviare' è un parametro per il comando 'tar'. Qualora si volesse aggiungere al comando un parametro che ha l'aspetto di una opzione, ma non la sua funzione, è possibile separarlo dal resto del comando scrivendolo dopo un doppio trattino '--'

Fatta questa premessa, è utile notare che il comando precedente è equivalente al comando:

tar -vcf mioArchivio.tar directoryDaArchiviare

In questo comando, tutte le opzioni corte sono state riunite e ne è stato cambiato l'ordine. Analogamente, l'ordine con cui vengono scritte le opzioni lunghe, insieme ai loro eventuali parametri, non ne altera il significato.

Il parsing della riga di comando è quindi la procedura con cui un comando, o uno script, interpretano le istruzioni fornite dall'utente tramite una opportuna combinazione di opzioni e parametri. Nel caso di uno script, per poter effettuare facilmente questo parsing, si possono usare due strumenti molto versatili: getopt e getopts (fare attenzione alla 's' finale nel secondo comando).

Parsing della riga di comando usando getopt

L'utilità del comando getopt consiste nel rendere canonica la lista di parametri e opzioni che vengono passate a uno script.

Pro del comando getopt

Contro del comando getopt

  • Il comando getopt descritto in questa guida non è un built-in della shell, ma è attualmente incluso nel pacchetto utils-linux e precedentemente nella glibc (cioè, la GNU lib c).

Parsing della riga di comando usando getopts

Pro del comando getopts

  • A differenza di getopt, il comando getopts è un built-in della shell. Questo comporta che:

    • è definito nello standard POSIX;
    • non c'è bisogno di fare attenzione alle sue diverse implementazioni, come avviene per getopt;

    • non ha bisogno di programmi esterni per accedere ai parametri posizionali;
    • può avere accesso diretto alle variabili della shell, che può usare per fare il parsing.

Contro del comando getopts

  1. Il comando getops è in grado di fare il parsing solo delle opzioni corte. Se lo script prevede l'uso di opzioni lunghe, sia nello stile GNU sia nello stile XF86, getopts non è la scelta opportuna.

Funzionamento

Sintassi di ''getopts''

La sintassi del comando è:

getopts optstring varname [args]

Parametro

Descrizione

optstring

È una stringa che istruisce il comando getopts relativamente a quali opzioni aspettarsi e quando siano previsti i relativi parametri.

varname

È una stringa che rappresenta il nome della variabile della shell in cui il comando getopts inserisce il valore delle opzioni lette.

args

È una stringa opzionale. Di default getopts fa il parsing dei parametri posizionali; se è presente args, farà il parsing dei parametri contenuti in quest'ultima.

Per il suo funzionamento, getopts usa le seguenti variabili

Variabile

Descrizione

OPTIND

È una variabile della shell, che contiene l'indice del parametro posizionale del prossimo argomento da processare. Viene modificata da getopts, che la usa per tenere traccia del proprio stato. Torna utile anche per poter fare uno shift dei parametri posizionali, dopo averli analizzati con getopts.

OPTARG

Viene impostata al valore dell'argomento relativo a ogni parametro trovato da getopts. Se l'opzione passata è sconosciuta, viene impostato al valore dell'opzione.

OPTERR

È una variabile di bash che può assumere il valore 1 o 0, a seconda che si desideri o meno che la shell mostri il messaggio d'errore generato automaticamente da getopts. Di default è impostata ad 1. Non è supportata in shell quali ksh93, mksh, zsh, or dash.

Modalità verbosa

optstring

È una stringa che istruisce il comando getopts relativamente a quali opzioni aspettarsi e quando siano previsti i relativi parametri.

Modalità silenziosa

Ulteriori risorse


CategoryNuoviDocumenti