We can use the expr command for arithmetic operations. The
expr command is an external command; the binary of the expr command is stored in the folder called /usr/bin/expr.
Perform an addition operation as follows:
$ expr 40 + 2 42
Perform a subtraction operation as follows:
$ expr 42 - 2 40
Perform a division operation as follows:
$ expr 40 / 10 4
Perform a modulus (getting remainder) operation as follows:
$ expr 42 % 10 2 $ expr 4 * 10 expr: syntax error
With the expr command, we cannot use * for multiplication. We need to use \* for multiplication:
$ expr "4 * 10" 4 * 10 $ expr 4 \* 10 40
We will write a simple script to add two numbers. Write the Shell script called arithmetic_01.sh as follows:
#!/bin/bash x=5 y=2 z=`expr $x + $y` echo $z Test the script as follows: $ chmod +x arithmetic_01.sh $ ./arithmetic_01.sh
The output is here:
7
Let's write a script to perform all the basic arithmetic operations. Write the Shell script called arithmetic_02.sh as follows:
#!/bin/bash
var1=30
var2=20
echo `expr $var1 + $var2` # Arithmetic Addition
echo `expr $var1 - $var2` # Arithmetic Subtraction
echo `expr $var1 \* $var2` # Arithmetic Multiplication
echo `expr $var1 / $var2` # Arithmetic Division
echo `expr $var1 % $var2` # Arithmetic Modular Division
# (Remainder)Let us test the script:
$ chmod +x arithmetic_02.sh $ ./arithmetic_02.sh
The output is here:
50 10 600 1 10
We can use two different ways for evaluating arithmetic expressions:
$(( expression )) $[ expression ]
Learn arithmetic operations using the preceding mentioned arithmetic expansion:
$ a=10 $ b=20 $ c=$((a + b)) $ echo $c
During arithmetic operations, we may need to find square or cube of any given number. These operations are called as exponent operations. We can perform exponent operations as follows:
$ a=5 $ b=3 $ expo=$[ $a ** $b ]# This is equivalent to ab $ echo $expo 125
This is the result of the 53 operations.
Another way of arithmetic expansions is as follows:
$ B=10 $ A=$[B + 10] $ echo $A 20 $ echo $[ 3 + 4 - 5 ] 2 $ echo $[ 3 + 4 * 5] 23
Arithmetic multiplication has more precedence over addition. Therefore, 4*5 was performed first, and the addition of 3+20 was performed later on:
$ echo $[(3 + 4) * 5] 35 $ echo $(( 3 + 4 )) 7 $ echo $(( 6 / 0 )) bash: 6/0: division by 0 ( error token is "0")
We will use many of the preceding arithmetic techniques for doing the same addition operation and check the result.
Let's write an interactive script called arithmetic_03.sh as follows:
#!/bin/bash echo "Enter first value" read number_1 echo "Enter secondvalue" read number_2 total=`expr $number_1 + $number_2` echo $total sum=$(($number_1 + $number_2)) echo "sum is "$sum echo "Sum is $[ $number_1+$number_2 ]"
Let us test the script:
$ chmod +x arithmetic_03.sh $ ./arithmetic_03.sh
Output:
Enter first value 10 Enter second value 5 15 Sum is 15 Sum is 15
The preceding Shell script shows that even if we use any of the previous techniques, the result remains the same.
Let's write the shell called script arithmetic_04.sh as follows:
#!/bin/bash # Interactive Shell Script Demonstrating Arithmetic Operators echo "Enter First value" read number_1 echo "Enter Second value" read number_2 echo $(($number_1 + $number_2)) echo $(($number_1 / $number_2)) # Division of two numbers
Let's test the program as follows:
$ chmod +x arithmetic_04.sh $ ./arithmetic_04.sh
Output:
Enter First value 10 Enter Second value 5 15 2
We will write one more script with a different technique. Let's write the Shell script arithmetic_05.sh as follows:
#!/bin/bash # Script is For Demonstrating Arithmetic var1=10 var2=20 echo $(($var1+$var2)) # Adding Two Values echo $(($var1-$var2)) # Subtract Two Values echo $(($var1*$var2)) # Multiply Two Values echo $(($var1%$var2)) # Remainder
Let's test the program here:
$ chmod +x arithmetic_05.sh $ ./arithmetic_05.sh
Output:
30 -10 200 10
We will write a script to add five numbers that are passed from a command line. Let's write the Shell script arithmetic_06.sh as follows:
#!/bin/bash # Write a shell script which will receive 5 numbers from command line # and print their sum. echo "Sum of Five Numbers is:" $(($1 + $2 + $3 + $4 + $5))
Let's test the program:
$ chmod +x arithmetic_06.sh $ ./arithmetic_06.sh 10 20 30 40 50
Output:
Sum of Five Numbers is: 150
Let's write the Shell script arithmetic_07.sh as follows for finding cube, quotient, and remainder:
#!/bin/bash x=99 (( cube = x * x * x )) (( quotient = x / 5 )) (( remainder = x % 5 )) echo "The cube of $x is $cube." echo "The quotient of $x divided by 5 is $quotient." echo "The remainder of $x divided by 5 is $remainder." # Note the use of parenthesis to controlling arithmetic operator # precedence evaluation. (( y = 2 * (quotient * 5 + remainder) )) echo "Two times $x is $y."
Let's test the program:
$ chmod +x arithmetic_07.sh $ ./arithmetic_07.sh
Output:
The cube of 99 is 970299. The quotient of 99 divided by 5 is 19. The remainder of 99 divided by 5 is 4. Two times 99 is 198.