Muito interessante esta dica que vi no "Advanced Bash-Scripting Guide"
do Mendel Cooper [ http://tldp.org/guides.html
<http://tldp.org/guides.html> ] e, inclusive,
publiquei no meu blog com um adendo sobre fazer o mesmo usando o bc
que todo mundo deve estar careca de saber.
Com Bash, podemos representar números nas mais variadas bases, desde 2
até 64 usando o operador # como no exemplo abaixo:
X=101
for BASE in 2 8 10 16 32 64 ; do
echo "$X na base $BASE eh $(( ${BASE}#${X} ))" # conversao pra decimal
done
101 na base 2 eh 5
101 na base 8 eh 65
101 na base 10 eh 101
101 na base 16 eh 257
101 na base 32 eh 1025
101 na base 64 eh 4097
echo $((16#FF)) $((32#V))
255 31
echo $((64#z)) $((64#Z)) $((64#@)) $((64#_)) # atenção nos 2 ultimos!
35 61 62 63
Além de ser possível usar a notação de octal e hexa do C (iniciar a
expressão com 0 e 0x, respectivamente)
echo $((10)) $(( 010 )) $(( 0x10 )) $((10 + 010 + 0x10))
10 8 16 34
--
Tiago B Peczenyj
Linux User #405772
http://peczenyj.blogspot.com/ <http://peczenyj.blogspot.com/>