venerdì 20 maggio 2011

Script per shell - variabili

Uno script shell permette la definizione di variabili, richiamabili all'interno dello script attraverso il carattere $. L'assegnazione di un valore a una variabile deve rispettare la seguente sintassi: nome_variabile=valore (notare l'assenza di caratteri di spazio).
#!/bin/bash
# Uso di variabili
testo="Data di oggi:"
data=$(date)
echo $testo $data
echo "Output: $testo $data"
Una variabile può contenere un valore (stringhe di caratteri o numeri) oppure l'esito di un comando. L'assegnazione di una stringa a una variabile va quotata con le virgolette, come nell'esempio. L'assegnazione dell'output di un comando a una variabile avviene, invece, attraverso la sintassi $(comando). Per fare riferimento al valore contenuto nella variabile, infine, usare la sintassi $nome_variabile. Ricordate, le variabili in uno script non sono tipizzate. L'ultima riga dello script ci permette di osservare la sostituzione operata dal comando echo con i rispettivi valori delle variabili $testo e $data: se nel testo racchiuso dalle doppie virgolette compare uno o più riferimenti a variabili questi verranno sostituiti dai rispettivi valori.
All'interno di uno script possiamo fare riferimento a due tipi di variabili: variabili locali o variabili d'ambiente (o di sistema). Le variabili locali sono visibili solo all'interno dello script e vengono dichiarate con la sintassi vista sopra. Le variabili d'ambiente sono, invece, disponibili a tutti gli script poiché passate dalla shell al processo che esegue lo script.
Alcune di queste sono ad esempio: $HOME, che contiene la stringa con il path della directory di home; $PWD, che contiene la stringa con il path della directory corrente; $USERNAME, che contiene la stringa del nome utente, etc...
#!/bin/bash
#Uso di variabili d'ambiente
echo -e "Directory corrente: "$PWD
echo -e "Directory home: "$HOME
echo -e "Username: "$USERNAME
L'utente può passare allo script altre variabili (argomenti) facendo seguire al nome dello script i valori da passare, ogni valore è separato dal successivo da un carattere di spazio. Con $# accediamo al numero di argomenti passati allo script, con $n (con n numero intero compreso nell'intervallo 0,9) accediamo al singolo argomento passato. Poiché il conteggio degli argomenti passati allo script inizia da 0 e poiché il primo argomento contiene sempre il nome del file ($0) che esegue lo script, il primo argomento utile per lo script (se esiste) si troverà in $1, il secondo in $2, etc...
#!/bin/bash
#Argomenti passati allo script
echo "Nome del file che esegue lo script: "$0
echo "Argomenti passati allo script: "$#
echo "Lista degli argomenti passati: "$*
echo "PID: "$$
exit 0
Altra variabile d'ambiente particolarmente utilizzata è $?, che rappresenta il valore tornato (exit status) dall'ultimo comando. Uno script può tornare un valore di stato attraverso l'istruzione exit codice_di_stato. La variabile d'ambiente $? accede al codice di stato tornato dall'ultimo comando. Provate a dare il comando $? dopo un comando, oppure dopo l'esecuzione dello script sopra. Ogni comando, infatti, torna in caso di successo il valore 0, in caso di errore un valore diverso da zero (che in molti casi identifica la tipologia dell'errore). La variabile d'ambiente $@, a differenza di $*, torna tutti gli argomenti passati allo script quotati.

Nessun commento:

Posta un commento