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.

cd $DIR_LOG<br />

Capitolo 2. Iniziare con #!<br />

if [ ‘pwd‘ != "$DIR_LOG" ] # o if [ "$PWD" != "$DIR_LOG" ]<br />

# Non siamo in /var/log?<br />

then<br />

echo "Non riesco a cambiare in $DIR_LOG."<br />

exit $E_XCD<br />

fi # Doppia verifica per vedere se ci troviamo nella <strong>di</strong>rectory corretta,<br />

#+ prima <strong>di</strong> cancellare il file <strong>di</strong> log.<br />

# ancora più efficiente:<br />

#<br />

# cd /var/log || {<br />

# echo "Non riesco a spostarmi nella <strong>di</strong>rectory stabilita." >&2<br />

# exit $E_XCD;<br />

# }<br />

tail -$linee messages > mesg.temp # Salva l’ultima sezione del file <strong>di</strong><br />

# log messages.<br />

mv mesg.temp messages # Diventa la nuova <strong>di</strong>rectory <strong>di</strong> log.<br />

# cat /dev/null > messages<br />

#* Non più necessario, perché il metodo precedente è più sicuro.<br />

cat /dev/null > wtmp # ’: > wtmp’ e ’> wtmp’ hanno lo stesso effetto.<br />

echo "Log cancellati."<br />

exit 0<br />

# Il valore <strong>di</strong> ritorno zero da uno script<br />

#+ in<strong>di</strong>ca alla shell la corretta esecuzione dello stesso.<br />

Poiché non si voleva cancellare l’intero log <strong>di</strong> sistema, questa versione dello script mantiene inalterata<br />

l’ultima sezione del file <strong>di</strong> log messages. Si scopriranno continuamente altri mo<strong>di</strong> per rifinire gli script<br />

precedenti ed aumentarne l’efficienza.<br />

I caratteri ( #!), all’inizio dello script, informano il sistema che il file contiene una serie <strong>di</strong> coman<strong>di</strong> che<br />

devono essere passati all’interprete in<strong>di</strong>cato. I caratteri #! in realtà sono un magic number 1 <strong>di</strong> due byte,<br />

vale a <strong>di</strong>re un identificatore speciale che designa il tipo <strong>di</strong> file o, in questo caso, uno script <strong>di</strong> shell<br />

eseguibile (eseguite man magic per ulteriori dettagli su questo affascinante argomento).<br />

Imme<strong>di</strong>atamente dopo #! compare un percorso. Si tratta del percorso al programma che deve interpretare<br />

i coman<strong>di</strong> contenuti nello script, sia esso una shell, un linguaggio <strong>di</strong> programmazione o una utility.<br />

L’interprete esegue quin<strong>di</strong> i coman<strong>di</strong> dello script, partendo dall’inizio (la riga successiva a #!) e<br />

ignorando i commenti. 2<br />

6

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

Saved successfully!

Ooh no, something went wrong!