11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

declare<br />

typeset<br />

readonly<br />

getopts<br />

Capitolo 11. Coman<strong>di</strong> interni e builtin<br />

Suggerimento: È possibile inizializzare ed esportare variabili con un’unica operazione, come<br />

export var1=xxx.<br />

Tuttavia, come ha sottolineato Greg Keraunen, in certe situazioni questo può avere un effetto<br />

<strong>di</strong>verso da quello che si avrebbe impostando prima la variabile ed esportandola<br />

successivamente.<br />

bash$ export var=(a b); echo ${var[0]}<br />

(a b)<br />

bash$ var=(a b); export var; echo ${var[0]}<br />

a<br />

I coman<strong>di</strong> declare e typeset specificano e/o limitano le proprietà delle variabili.<br />

Come declare -r, imposta una variabile in sola lettura ovvero, in realtà, come una costante. I<br />

tentativi per mo<strong>di</strong>ficare la variabile falliscono generando un messaggio d’errore. È l’analogo shell<br />

del qualificatore <strong>di</strong> tipo const del linguaggio C.<br />

Questo potente strumento verifica gli argomenti passati da riga <strong>di</strong> comando allo script. È l’analogo<br />

<strong>Bash</strong> del comando esterno getopt e della funzione <strong>di</strong> libreria getopt familiare ai programmatori in<br />

C. Permette <strong>di</strong> passare e concatenare più opzioni 2 e argomenti associati allo script (per esempio<br />

nomescript -abc -e /usr/local).<br />

Il costrutto getopts utilizza due variabili implicite. $OPTIND, che è il puntatore all’argomento,<br />

(OPTion INDex) e $OPTARG (OPTion ARGument) l’argomento (eventuale) associato ad un’opzione.<br />

Nella <strong>di</strong>chiarazione, i due punti che seguono il nome dell’opzione servono ad in<strong>di</strong>care che<br />

quell’opzione ha associato un argomento.<br />

Il costrutto getopts <strong>di</strong> solito si trova all’interno <strong>di</strong> un ciclo while che elabora le opzioni e gli<br />

argomenti uno alla volta e quin<strong>di</strong> incrementa la variabile implicita $OPTIND per il passo successivo.<br />

Nota:<br />

1. Gli argomenti passati allo script da riga <strong>di</strong> comando devono essere preceduti da un meno<br />

(-). È il prefisso - che consente a getopts <strong>di</strong> riconoscere gli argomenti da riga <strong>di</strong> comando<br />

come opzioni. Infatti, getopts non elabora argomenti che non siano preceduti da - e<br />

termina la sua azione appena incontra un’opzione che ne è priva.<br />

209

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!