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.

Esempio 9-29. Numeri pseudocasuali utilizzando awk<br />

Capitolo 9. Variabili riviste<br />

#!/bin/bash<br />

# random2.sh: Restituisce un numero pseudo-casuale nell’intervallo 0 - 1.<br />

# Uso della funzione rand() <strong>di</strong> awk.<br />

SCRIPTAWK=’ { srand(); print rand() } ’<br />

# Comando(i) / parametri passati ad awk<br />

# Notate che srand() ricalcola il seme del generatore <strong>di</strong> numeri <strong>di</strong> awk.<br />

echo -n "Numeri casuali tra 0 e 1 = "<br />

echo | awk "$SCRIPTAWK"<br />

# Cosa succede se si omette ’echo’?<br />

exit 0<br />

# Esercizi:<br />

# ---------<br />

# 1) Usando un ciclo, visualizzare 10 <strong>di</strong>fferenti numeri casuali.<br />

# (Suggerimento: bisogna ricalcolare un <strong>di</strong>verso seme per la funzione<br />

#+ "srand()" ad ogni passo del ciclo. Cosa succede se non viene fatto?)<br />

# 2) Usando come fattore <strong>di</strong> scala un multiplo intero, generare numeri<br />

#+ casuali nell’intervallo tra 10 e 100.<br />

# 3) Come il precedente esercizio nr.2, ma senza intervallo.<br />

Anche il comando date si presta a generare sequenze <strong>di</strong> interi pseudocasuali.<br />

9.7. Il costrutto doppie parentesi<br />

Simile al comando let, il costrutto ((...)) consente l’espansione e la valutazione aritmetica. Nella sua<br />

forma più semplice, a=$(( 5 + 3 )) imposta “a” al valore “5 + 3”, cioè 8. Non solo, ma questo<br />

costrutto consente <strong>di</strong> gestire, in <strong>Bash</strong>, le variabili con la sintassi del linguaggio C.<br />

Esempio 9-30. Gestire le variabili in stile C<br />

#!/bin/bash<br />

# Manipolare una variabile, in stile C, usando il costrutto ((...)).<br />

echo<br />

(( a = 23 )) # Impostazione, in stile C, con gli spazi da entrambi i lati<br />

#+ dell’ "=".<br />

echo "a (valore iniziale) = $a"<br />

156

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

Saved successfully!

Ooh no, something went wrong!