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:
|–||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|
Now, I am going to discuss each of the arithmetic operators in detail:
The plus sign (+) is used for addition operation in Bash. For example,
total=$((5+10)) Echo “Result of summation =$total”
The minus sign (–) is used to perform subtraction. Such as,
diff=$((15-10)) Echo “Result of subtraction=$diff”
The asterisk sign (*) is used to multiply two numbers in Bash. For instance,
multiply=$((5*10)) echo “Result of multiplication=$multiply”
Forward slash (/) is used to divide one number by another:
division=$((10/5)) echo “Result of multiplication=$division”
One can calculate the modulus or remainder using the percentage sign (%). For example,
remainder=$((10/5)) echo “Remainder of the division=$remainder”
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"
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:
|+=||Increment by constant||x=20
(( x += 10 ))
|-=||Decrement by constant||x=20
(( x -= 10 ))
|*=||Multiply by constant||x=20
(( x *= 10 ))
|/=||Divide by Constant||x=20
(( x /= 10 ))
|%=||Remainder after Dividing by constant||x=19
(( x %= 6 ))
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"
Decrement by Constant (-+)
To decrease a variable by a constant use the
x=20 (( x -= 15 )) echo "After decrement, x=$x"
Multiply by Constant (*=)
To multiply a variable with a constant use the
x=10 (( x *= 2 )) echo "After multiplying by 2, x=$x"
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"
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"
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)))
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
The number provided by the user is 9. The program determines it as an odd number by successfully using the modulo (%) operator in Bash.
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
a=5 b=3 echo $((a + b)) # Output: Result: 8
- expr command: The expr command evaluates expressions and performs arithmetic
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 floating point number 2.5. Use the bc command to perform this type of calculation.