If portability matters, use $(( )) that is a (arithmetic) expression and works in all Posix-compatible shells.
In contrast, the (( )) is a (arithmetic) command, and only works in bash, ksh, zsh.
With $(( )) there is a one-to-one translation from expr
Code:
count=`expr $count + 1`
translates to
Code:
count=$(($count + 1))
expr is itself a command, its arguments are expanded by the shell unless \escaped
Code:
mult=`expr $count \* 2`
translates to
Code:
mult=$(($count * 2))
More advanced stuff:
Within $(( )) you can omit the $ in front of variables, because any letter-word MUST be a variable. Also spaces can be omitted.
But the $ is still required in case you use variable modifiers, for example
Code:
count=$((${count:-0} + 1))
I guess the (( )) will make it into the next Posix standard... whenever that will be.