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.

eval<br />

let "a -= 5" # Equivale a let "a = a - 5"<br />

echo "32 - 5 = $a" # 27<br />

let "a = a * 10" # Equivale a let "a = a * 10"<br />

echo "27 * 10 = $a" # 270<br />

let "a %= 8" # Equivale a let "a = a % 8"<br />

echo "270 modulo 8 = $a (270 / 8 = 33, resto $a)"<br />

# 6<br />

echo<br />

exit 0<br />

eval arg1 [arg2] ... [argN]<br />

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

Combina gli argomenti presenti in un’espressione, o in una lista <strong>di</strong> espressioni, e li valuta. Espande<br />

qualsiasi variabile presente nell’espressione. Il resultato viene tradotto in un comando. Può essere<br />

utile per generare del co<strong>di</strong>ce da riga <strong>di</strong> comando o da uno script.<br />

bash$ processo=xterm<br />

bash$ mostra_processo="eval ps ax | grep $processo"<br />

bash$ $mostra_processo<br />

1867 tty1 S 0:02 xterm<br />

2779 tty1 S 0:00 xterm<br />

2886 pts/1 S 0:00 grep xterm<br />

Esempio 11-11. Dimostrazione degli effetti <strong>di</strong> eval<br />

#!/bin/bash<br />

y=‘eval ls -l‘ # Simile a y=‘ls -l‘<br />

echo $y #+ ma con i ritorni a capo tolti perché la variabile<br />

#+ "visualizzata" è senza "quoting".<br />

echo<br />

echo "$y" # I ritorni a capo vengono mantenuti con il<br />

#+ "quoting" della variabile.<br />

echo; echo<br />

y=‘eval df‘ # Simile a y=‘df‘<br />

echo $y #+ ma senza ritorni a capo.<br />

# Se non si preservano i ritorni a capo, la verifica dell’output<br />

#+ con utility come "awk" risulta più facile.<br />

202

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

Saved successfully!

Ooh no, something went wrong!