Arithmetic Operators in Bash

Arithmetic operators are operators that facilitate the evaluation of a desired mathematical expression. Bash shell supports a lot of arithmetic operators. One can perform simple addition, and subtraction and evaluate complex arithmetic expressions using these operators. In this article, I will talk about different arithmetic operators with their execution in Bash.

Different Arithmetic Operators in Bash

Bash offers various operators to perform arithmetic operations. These operators have different levels of precedence.

For example, the expression $((3*5+6)/7-1)) is evaluated in accordance with the rules of precedence. (3*5+6) is computed first as it is enclosed by parenthesis. Within the parentheses, the multiplication operation 3*5 is computed first, resulting in 15. Then, the addition operation 15 + 6 is performed, yielding 21. Subsequently, division 21 / 7 is evaluated before subtraction, resulting in 3. Finally, the subtraction 3 - 1 is computed, yielding the final result of 2. Below is a list of operators sorted by increasing order of precedence:

Operators Operation Example Output Precedence
+ Addition $((10+5)) 15 Lowest
Subtraction $((10-5)) 5 Same as Addition
* Multiplication $((10*5)) 50 Higher than addition lower than exponential
/ Division $((10/5)) 2 Higher than addition lower than exponential
% Modulus (remainder) $((13/5)) 3 Higher than addition lower than exponential
** Exponentiation $((2**3)) 8 Highest

Now, I am going to discuss each of the arithmetic operators in detail:

Addition

The plus sign (+) is used for addition operation in Bash. For example,

total=$((5+10))
echo "Result of summation =$total"

Addition operator in BashSubtraction

The minus sign () is used to perform subtraction. Such as,

diff=$((15-10))
echo "Result of subtraction=$diff"

Subtraction operator in BashMultiplication

The asterisk sign (*) is used to multiply two numbers in Bash. For instance,

multiply=$((5*10))
echo "Result of multiplication=$multiply"

Multiplication operator in BashDivision

Forward slash (/) is used to divide one number by another:

division=$((10/5))
echo "Result of multiplication=$division"

Division operator in BashModulus (Remainder)

One can calculate the modulus or remainder using the percentage sign (%). For example,

remainder=$((17%5))
echo "Remainder of the division=$remainder"

Modulus arithemetic operator in Bash

Exponential

To calculate the exponential of a number raised to another number, use the double asterisk sign (**):

expo=$((2**3))
echo "Exponential of 2 to the power 3=$expo"

Exponential operator in Bash

Assignment Operators for Arithmetic Calculation in Bash

Apart from arithmetic operators, there are a few assignment operators in Bash. These operators are used to assign values to variables. They take a value on the right side of the operator and change the variable on the left side based on the given value and the operator. These are also useful to perform arithmetic operations in some cases.

All the assignment operators have equal levels of precedence. The following list contains assignment operators and their functions on numerical values:

Operators Operation Example Output/Value
+= Increment by constant x=20

(( x += 10 ))

x=30
-= Decrement by constant x=20

(( x -= 10 ))   

x=10
*= Multiply by constant x=20

(( x *= 10 ))   

x=200
/= Divide by Constant x=20

(( x /= 10 ))   

x=2
%= Remainder after Dividing by constant x=19

(( x %= 6 ))   

x=1

Let’s discuss each of these assignment operators in short:

Increment by Constant (+=)

To increase a variable by a constant use the increment by constant += operator. For instance,

x=5
(( x += 15 ))
echo "After Increment, x=$x"

Increment by a constant operator in Bash

Decrement by Constant (-=)

To decrease a variable by a constant use the -= operator:

x=20
(( x -= 15 ))
echo "After decrement, x=$x"

Decrement by a constant in Bash

Multiply by Constant (*=)

To multiply a variable with a constant use the *= operator:

x=10
(( x *= 2 ))
echo "After multiplying by 2, x=$x"

Multiply by a constant in Bash

Divide by Constant (/=)

/= replaces the variable with the result of division after dividing it by a constant:

x=20
(( x /= 5 ))
echo "After decrement, x=$x"

Division by a constant operator

Remainder After Dividing by Constant (%=)

%= operator replaces the variable with the remainder after dividing it by a constant. For example,

x=20
(( x %= 6 ))
echo "Remainder after division, x=$x"

Remainder after divisioin operator

Practical Application of Arithmetic Operators in Bash

Bash arithmetic operators have various real-life usages. In this tutorial, I will show two basic examples involving the calculation with multiple operators. These will help you to understand how arithmetic operators can be used in practical cases:

Calculate the Perimeter of a Rectangular

To calculate the perimeter of a rectangle, one can use the addition and multiplication operators simultaneously.

#!/bin/bash

# Get user input for rectangle dimensions
read -p "Enter the length of the rectangle: " length
read -p "Enter the width of the rectangle: " width

# Calculate perimeter
perimeter=$((2 * (length + width)))
EXPLANATION

The program adds the length and width using the plus + arithmetic operator. Then the summation is multiplied by 2 using the multiplication operator * to get the perimeter of the rectangle.

Finding the perimeter of a rectangle using bash arithmetic operators

Here the length and width of the rectangle are 10 and 5 respectively. The program calculates the perimeter of the rectangle 30 using the addition and multiplication operator.

Check Odd or Even Number

Divide a number by 2 and compare the remainder with zero to determine whether a number is odd or even. To check it in Bash, the modulo (%) operator is quite useful.

#!/bin/bash

# Check if a number is odd or even
read -p "Enter the number: " number
if ((number % 2 == 0)); then
echo "$number is even."
else
echo "$number is odd."
fi
EXPLANATION

The % operator is used to find the remainder when the variable number is divided by 2.

Check odd or even number using Bash arithmetic operators

The number provided by the user is 9. The program determines it as an odd number by successfully using the modulo (%) operator in Bash.

Conclusion

In conclusion, arithmetic operators are for performing mathematical calculations. Bash users should familiarize themselves with arithmetic operators to become more efficient scriptwriters.

People Also Ask

What are the ways to perform arithmetic calculations in Bash?

There are multiple ways to perform arithmetic calculations in Bash.

  • Arithmetic expansion: $(( )) allows users to evaluate arithmetic expressions like the

following.

a=5
b=3
echo $((a + b))
# Output: Result: 8
  • expr command: The expr command evaluates expressions and performs arithmetic

operations.

echo $(expr 5 + 3)
Output: Result: 8
  • let command: The let command is also useful for evaluating a mathematical

expression in Bash. To be specific let '5 + 3' perform the addition of 5 and 3 and result in 8.

How to evaluate arithmetic expressions in the if statement?

To evaluate arithmetic expression within an if statement one can use double parenthesis. For instance, ((13 % 2 == 0)) calculates the remainder using the modulo (%) operator when 13 is divided by 2 and compares it with zero.

How to perform floating point calculations in Bash?

To perform floating point calculations pass the expression to the bc command. For instance, echo 2.2*3.5 | bc performs the multiplication of two floating point numbers 2.2 and 3.5.

How to fix “invalid arithmetic operator” in bash?

In Bash,‘invalid arithmetic operator’ error occurs due to many reasons. To fix the error first identify the reason behind it. In most cases, it occurs due to the intention of calculating floating point using arithmetic expansion. Arithmetic expansion can’t handle floating point arithmetics. For instance, echo $((2.5+5)) will show ‘invalid arithmetic operator’ because of the floating point number 2.5. Use the bc command to perform this type of calculation.

Related Articles


<< Go Back to Bash Operator | Bash Scripting Tutorial

Rate this post
LINUX
FUNDAMENTALS
A Complete Guide for Beginners Enroll Course Now
Md Zahidul Islam Laku

Hey, I'm Zahidul Islam Laku currently working as a Linux Content Developer Executive at SOFTEKO. I completed my graduation from Bangladesh University of Engineering and Technology (BUET). I write articles on a variety of tech topics including Linux. Learning and writing on Linux is nothing but fun as it gives me more power on my machine. What can be more efficient than interacting with the Operating System without Graphical User Interface! Read Full Bio

Leave a Comment