Hexadecimal To Decimal in Shell Script

One more way to do it using the shell (bash or ksh, doesn't work with dash):

echo $((16#FF))
255

To convert from hex to decimal, there are many ways to do it in the shell or with an external program:

With bash:

$ echo $((16#FF))
255

with bc:

$ echo "ibase=16; FF" | bc
255

with perl:

$ perl -le 'print hex("FF");'
255

with printf :

$ printf "%d\n" 0xFF
255

with python:

$ python -c 'print(int("FF", 16))'
255

with ruby:

$ ruby -e 'p "FF".to_i(16)'
255

with node.js:

$ nodejs <<< "console.log(parseInt('FF', 16))"
255

with rhino:

$ rhino<<EOF
print(parseInt('FF', 16))
EOF
...
255

with groovy:

$ groovy -e 'println Integer.parseInt("FF",16)'
255

Dealing with a very lightweight embedded version of busybox on Linux means many of the traditional commands are not available (bc, printf, dc, perl, python)

echo $((0x2f))
47

hexNum=2f
echo $((0x${hexNum}))
47

Credit to Peter Leung for this solution.