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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

echo -n "$numero "<br />

let "contatore += 1"<br />

done<br />

}<br />

echo; echo<br />

RANDOM=1 # Impostazione del seme <strong>di</strong> RANDOM.<br />

numeri_casuali<br />

echo; echo<br />

Capitolo 9. Variabili riviste<br />

RANDOM=1 # Stesso seme...<br />

numeri_casuali # ...riproduce esattamente la serie precedente.<br />

#<br />

# Ma, quant’è utile duplicare una serie <strong>di</strong> numeri "casuali"?<br />

echo; echo<br />

RANDOM=2 # Altro tentativo, ma con seme <strong>di</strong>verso...<br />

numeri_casuali # viene generata una serie <strong>di</strong>fferente.<br />

echo; echo<br />

# RANDOM=$$ imposta il seme <strong>di</strong> RANDOM all’id <strong>di</strong> processo dello script.<br />

# È anche possibile usare come seme <strong>di</strong> RANDOM i coman<strong>di</strong> ’time’ o ’date’.<br />

# Ancora più elegante...<br />

SEME=$(head -1 /dev/urandom | od -N 1 | awk ’{ print $2 }’)<br />

# Output pseudocasuale prelevato da /dev/urandom (file <strong>di</strong><br />

#+ <strong>di</strong>spositivo <strong>di</strong> sistema pseudo-casuale), quin<strong>di</strong> convertito<br />

#+ con "od" in una riga <strong>di</strong> numeri (ottali) visualizzabili,<br />

#+ infine "awk" ne recupera solamente uno per SEME.<br />

RANDOM=$SEME<br />

numeri_casuali<br />

echo; echo<br />

exit 0<br />

Nota: Il file <strong>di</strong> <strong>di</strong>spositivo /dev/urandom fornisce un metodo per generare numeri pseudocasuali<br />

molto più “casuali” che non la variabile $RANDOM. dd if=/dev/urandom of=nomefile bs=1<br />

count=XX crea un file <strong>di</strong> numeri casuali ben <strong>di</strong>stribuiti . Tuttavia, per assegnarli ad una variabile in<br />

uno script è necessario un espe<strong>di</strong>ente, come filtrarli attraverso od (come nell’esempio precedente e<br />

Esempio 12-13) o utilizzare dd (ve<strong>di</strong> Esempio 12-55) o anche collegandoli con una pipe a md5sum<br />

(ve<strong>di</strong> Esempio 33-14).<br />

Esistono altri mo<strong>di</strong> per generare numeri pseudocasuali in uno script. Awk ne fornisce uno molto<br />

comodo.<br />

155

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

Saved successfully!

Ooh no, something went wrong!