# Chapter 15. 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 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:

Example 12-9

Example 10-14

Example 26-1

Example 26-11

Example A-17