Debug School

rakesh kumar
rakesh kumar

Posted on

Bash Arithmetic Operators

Double Parentheses
((expression))

Sum=$((10+3))

((Sum=10+3))

((Sum=Num1+Num2))

Sum=$((Num1+Num2))

let "z = $(( x ** y ))"

"c= expr $a + $b"

In this topic, we will understand how to use arithmetic operators in Bash.

Depending on what type of result we want through our scripts, we may need to apply arithmetic operators at some point. Like variables, they are reasonably easy to apply. In the bash script, we can perform arithmetic operations on numeric values to get the desired result.

There are 11 arithmetic operators which are supported by Bash Shell.

Look at the following table demonstrating the syntax, description and examples for each of the arithmetic operators:

Image description

Image description

Performing Arithmetic Operations in Bash
There are many options to perform arithmetic operations on the bash shell. Some of the options are given below that we can adopt to perform arithmetic operations:

Double Parentheses
Double parentheses is the easiest mechanism to perform basic arithmetic operations in the Bash shell. We can use this method by using double brackets with or without a leading $.

Syntax

*((expression)) *
We can apply four different ways to achieve the required objectives. Look at the methods given below to understand how the double parentheses mechanism can be used (Assuming that we want to add the numbers 10 and 3) :

Method 1

Sum=$((10+3))  
echo "Sum = $Sum"  
Enter fullscreen mode Exit fullscreen mode

Method 2

((Sum=10+3))  
echo "Sum = $Sum" 
Enter fullscreen mode Exit fullscreen mode

Method 3

Num1=10  
Num2=3  
((Sum=Num1+Num2))  
echo "Sum = $Sum"  
Enter fullscreen mode Exit fullscreen mode

Method 4

Num1=10  
Num2=3  
Sum=$((Num1+Num2))  
echo "Sum = $Sum" 
Enter fullscreen mode Exit fullscreen mode

All of these methods will provide the same output as:

Sum = 13
Enter fullscreen mode Exit fullscreen mode

Following is an example demonstrating the use of double parentheses for arithmetic operations in a Bash shell script:

Bash Script

#!/bin/bash  

x=8  
y=2  
echo "x=8, y=2"  
echo "Addition of x & y"  
echo $(( $x + $y ))  
echo "Subtraction of x & y"  
echo $(( $x - $y ))  
echo "Multiplication of x & y"  
echo $(( $x * $y ))  
echo "Division of x by y"  
echo $(( $x / $y ))  
echo "Exponentiation of x,y"  
echo $(( $x ** $y ))  
echo "Modular Division of x,y"  
echo $(( $x % $y ))  
echo "Incrementing x by 5, then x= "  
(( x += 5 ))   
echo $x  
echo "Decrementing x by 5, then x= "  
(( x -= 5 ))  
echo $x  
echo "Multiply of x by 5, then x="  
(( x *= 5 ))  
echo $x  
echo "Dividing x by 5, x= "  
(( x /= 5 ))  
echo $x  
echo "Remainder of Dividing x by 5, x="  
(( x %= 5 ))  
echo $x  
Enter fullscreen mode Exit fullscreen mode

Output

Image description

Let Construction
Let is a built-in command of Bash that allows us to perform arithmetic operations. It follows the basic format:

Syntax

let <arithmetic expression>  
Enter fullscreen mode Exit fullscreen mode

An example is given below explaining how to use let command in a Bash script:

Bash script

#!/bin/bash  

x=10  
y=6  
z=0  
echo "Addition"  
let "z = $(( x + y ))"  
echo "z= $z"  

echo "Substraction"  
let "z = $((x - y ))"  
echo "z= $z"  

echo "Multiplication"  
let "z = $(( x * y ))"  
echo "z = $z"  

echo "Division"  
let "z = $(( x / y ))"  
echo "z = $z"  

echo "Exponentiation"  
let "z = $(( x ** y ))"  
echo "z = $z"  

echo "Modular Division"  
let "z = $(( x % y ))"  
echo "z = $z"  

let "x += 5"  
echo "Incrementing x by 5, then x= "  
echo $x  

let "x -= 5"  
echo "Decrementing x by 5, then x= "  
echo $x  

let "x *=5"  
echo "Multiply of x by 5, then x="  
echo $x  

let "x /= 5"  
echo "Dividing x by 5, x= "  
echo $x  

let "x %= 5"  
echo "Remainder of Dividing x by 5, x="  
echo $x 
Enter fullscreen mode Exit fullscreen mode

Output

Image description

Backticks
In bash scripting, an arithmetic expansion can also be performed using backticks and expr (known as all-purpose expression evaluator). The expr is similar to 'let,' but it does not save the result to a variable. It directly prints the result. Unlike let, we don't need to enclose the expression within the quotes. We are required to use spaces between the items of the expression. It is important to note that we should use 'expr` within command substitution to save the output to a variable.

We can also use expr without 'backticks'.

Syntax


expr item1 operator item2
or
expr item1 operator item2

An example is given below explaining how to use backticks and expr in a Bash script:

Bash Script Program

`

!/bin/bash

Basic arithmetic using expr

echo "a=10, b=3"

echo "c is the value of addition c=a+b"

a=10

b=3

echo "c= expr $a + $b"
`

Output

Image description

Top comments (0)