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.

8.2. Costanti numeriche<br />

Capitolo 8. Operazioni ed argomenti correlati<br />

Lo script <strong>di</strong> shell interpreta un numero come numero decimale (base 10), tranne quando quel numero è<br />

scritto in una notazione particolare: con un prefisso specifico. Un numero preceduto da 0 è un numero<br />

ottale (base 8). Un numero preceduto da 0x è un numero esadecimale (base 16). Un numero<br />

contenente un # viene valutato come BASE#NUMERO (con limitazioni <strong>di</strong> notazione ed ampiezza).<br />

Esempio 8-4. Rappresentazione <strong>di</strong> costanti numeriche<br />

#!/bin/bash<br />

# numbers.sh: Rappresentazione <strong>di</strong> numeri con basi <strong>di</strong>fferenti.<br />

# Decimale: quella preimpostata<br />

let "dec = 32"<br />

echo "numero decimale = $dec" # 32<br />

# Qui non c’è niente <strong>di</strong> insolito.<br />

# Ottale: numeri preceduti da ’0’ (zero)<br />

let "oct = 032"<br />

echo "numero ottale = $ott" # 26<br />

# Risultato visualizzato come decimale.<br />

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

# Esadecimale: numeri preceduti da ’0x’ o ’0X’<br />

let "esa = 0x32"<br />

echo "numero esadecimale = $esa" # 50<br />

# Risultato visualizzato come decimale.<br />

# Altre basi: BASE#NUMERO<br />

# BASE tra 2 e 64.<br />

# NUMERO deve essere formato dai simboli nell’intervallo in<strong>di</strong>cato da<br />

#+ BASE, ve<strong>di</strong> <strong>di</strong> seguito.<br />

let "bin = 2#111100111001101"<br />

echo "numero binario = $bin" # 31181<br />

let "b32 = 32#77"<br />

echo "numero in base 32 = $b32" # 231<br />

let "b64 = 64#@_"<br />

echo "numero in base 64 = $b64" # 4031<br />

#<br />

# Questa notazione funziona solo per un intervallo limitato (2 - 64)<br />

#+ <strong>di</strong> caratteri ASCII<br />

# 10 cifre + 26 caratteri minuscoli + 26 caratteri maiuscoli + @ + _<br />

echo<br />

echo $((36#zz)) $((2#10101010)) $((16#AF16)) $((53#1aA))<br />

92

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

Saved successfully!

Ooh no, something went wrong!