**This is an old revision of the document!**

# Arithmetic expansion

$(( <EXPRESSION> )) $[ <EXPRESSION> ]

The arithmetic expression `<EXPRESSION>`

is evaluated and the resulting value replaces the whole `$((...))`

construct:

Please **do not use the second form $[ … ]**! It's deprecated. The preferred and standardized form is

`$(( ... ))`

!

read -p "Enter first operand: " first read -p "Enter second operand: " second echo "The sum is $((first + second))"

**Note** that in Bash you don't need the arithmetic expansion to simply check for a specific value of an integer, this can be done using the arithmetic evaluation compound command:

read -p "Enter a number: " number if ((number == 1234)); then echo "Good guess" else echo "Haha... :-P" fi

**Variables** used inside the arithmetic expansion can be used with or without variable expansion:

x=1 echo $((x)) echo $(($x)) # This leads to an error, since it's expanded to $(("1")), which is an invalid arithmetic expression: echo $(("$x"))

## Discussion

The line

read -p "Enter a number: "

in the second example should read

read -p "Enter a number: " number

Fixed, thx

Should mention that

`$(())`

form doesn't accept quoted variable names.