Arithmetic Expressions

The let command performs arithmetic. Bash is restricted to integer arithmetic. The shell provides a way to substitute arithmetic values (for use as command arguments or in variables); base conversion is also possible:

$(( expr ))

Use the value of the enclosed arithmetic expression.

B#n

Interpret integer n in numeric base B. For example, 8#100 specifies the octal equivalent of decimal 64.

Operators

The shell uses arithmetic operators from the C programming language, in decreasing order of precedence.

Operator

Description

a The ** operator is right-associative. Prior to Version 3.1, it was left-associative.

++ - -

Auto-increment and auto-decrement, both prefix and postfix.

+ - ! ~

Unary plus and minus, logical negation and binary inversion (one's complement).

**

Exponentiation.a

* / %

Multiplication; division; modulus (remainder).

+ -

Addition; subtraction.

<< >>

Bitwise left shift; bitwise right shift.

< <= > >=

Less than; less than or equal to; greater than; greater than or equal to.

== !=

Equality; inequality (both evaluated left to right).

&

Bitwise AND.

^

Bitwise exclusive OR.

|

Bitwise OR.

&&

Logical AND (short circuit).

||

Logical OR (short circuit).

?:

Inline conditional evaluation.

= += -=

 

*= /= %=

 

<<= >>=

Assignment.

&= ^= |=

 

,

Sequential expression evaluation.

Examples

let "count=0" "i = i + 1"			Assign i and count
let "num % 2"				Test for an even number (( percent >= 0 && ...

Get bash Quick Reference now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.