## Chapter 13. Arithmetic Expansion

Arithmetic expansion provides a powerful tool for performing (integer) arithmetic operations in scripts. Translating a string into a numerical expression is relatively straightforward using backticks, double parentheses, or let.

Variations

Arithmetic expansion with backticks (often used in conjunction with expr)
`z=`expr \$z + 3`          # The 'expr' command performs the expansion.`
Arithmetic expansion with double parentheses, and using let

The use of backticks (backquotes) in arithmetic expansion has been superseded by double parentheses -- `((...))` and `\$((...))` -- and also by the very convenient let construction.

```z=\$((\$z+3))
z=\$((z+3))                                  #  Also correct.
#  Within double parentheses,
#+ parameter dereferencing
#+ is optional.

# \$((EXPRESSION)) is arithmetic expansion.  #  Not to be confused with
#+ command substitution.

# You may also use operations within double parentheses without assignment.

n=0
echo "n = \$n"                             # n = 0

(( n += 1 ))                              # Increment.
# (( \$n += 1 )) is incorrect!
echo "n = \$n"                             # n = 1

let z=z+3
let "z += 3"  #  Quotes permit the use of spaces in variable assignment.
#  The 'let' operator actually performs arithmetic evaluation,
#+ rather than expansion.```

Examples of arithmetic expansion in scripts: