Perform arithmetic operations

From Linux Shell Scripting Tutorial - A Beginner's handbook
Jump to: navigation, search
← Getting User Input Via KeyboardHomeCreate an integer variable →

You can perform math operations on Bash shell variables. The bash shell has built-in arithmetic option. You can also use external command such as expr and bc calculator.

Arithmetic Expansion in Bash Shell

Arithmetic expansion and evaluation is done by placing an integer expression using the following format:

$((expression))
$(( n1+n2 ))
$(( n1/n2 ))
$(( n1-n2 ))

Examples

Add two numbers on fly using the echo command:

echo $(( 10 + 5 ))

Add two numbers using x and y variable. Create a shell program called add.sh using a text editor:

#!/bin/bash
x=5
y=10
ans=$(( x + y ))
echo "$x + $y = $ans"

Save and close the file. Run it as follows:

chmod +x add.sh
./add.sh

Sample Outputs:

5 + 10 = 15

Create an interactive program using the read command called add1.sh using a text editor:

#!/bin/bash
read -p "Enter two numbers : " x y
ans=$(( x + y ))
echo "$x + $y = $ans"

Save and close the file. Run it as follows:

chmod +x add1.sh
./add1.sh

Sample Outputs:

Enter two numbers : 20 30
20 + 30 = 50

Mathematical Operators With Integers

Operator Description Example Evaluates To
+ Addition echo $(( 20 + 5 )) 25
- Subtraction echo $(( 20 - 5 )) 15
/ Division echo $(( 20 / 5 )) 4
* Multiplication echo $(( 20 * 5 )) 100
 % Modulus echo $(( 20 % 3 )) 2
++ post-increment (add variable value by 1) x=5
echo $(( x++ ))
echo $(( x++ ))
5
6
-- post-decrement (subtract variable value by 1) x=5
echo $(( x-- ))
4
** Exponentiation x=2
y=3
echo $(( x ** y ))
8

Order of Precedence

Operators are evaluated in order of precedence. The levels are listed in order of decreasing precedence (quoting form the bash man page).

       id++ id--
              variable post-increment and post-decrement
       ++id --id
              variable pre-increment and pre-decrement
       - +    unary minus and plus
       ! ~    logical and bitwise negation
       **     exponentiation
       * / %  multiplication, division, remainder
       + -    addition, subtraction
       << >>  left and right bitwise shifts
       <= >= < >
              comparison
       == !=  equality and inequality
       &      bitwise AND
       ^      bitwise exclusive OR
       |      bitwise OR
       &&     logical AND
       ||     logical OR
       expr?expr:expr
              conditional operator
       = *= /= %= += -= <<= >>= &= ^= |=
              assignment
       expr1 , expr2
              comma
← Getting User Input Via KeyboardHomeCreate an integer variable →