Basic Operators in Shell Scripting

Shell is an interface using which the programmer can execute command and interact directly to the operating system. Shell scripting is giving commands that a shell can execute.
In shell also there are variables and operators that are used to manipulate these variables. There are 5 basic operators in shell scripting.
Arithmetic Operators
Relational Operators
Boolean Operators
Bitwise Operators
File Test Operators
Arithmetic operators in shell scripting are used to perform general arithmetic/ mathematical operations. There are 7 valid arithmetic operators in shell scripting −
Addition (+) is used to add two operands (variables).
Addition (+) is used to add two operands (variables).
Subtraction (-) is used to subtract two variables (operands) in shell scripting.
Subtraction (-) is used to subtract two variables (operands) in shell scripting.
Multiplication (*) is used to multiply two variables (operands) in shell scripting.
Multiplication (*) is used to multiply two variables (operands) in shell scripting.
Division (/) is used to divide two variables (operands) in shell scripting.
Division (/) is used to divide two variables (operands) in shell scripting.
Modulus (%) is used to find the remainder on division of operands in shell scripting.
Modulus (%) is used to find the remainder on division of operands in shell scripting.
Increment operator (++) is used to add one to the current value of the operator.
Increment operator (++) is used to add one to the current value of the operator.
Decrement operator (--) is used to subtract one from the current value of the operator.
Decrement operator (--) is used to subtract one from the current value of the operator.
To show implementation of arithmetic operator in shell scripting −
a = 32
b = 23
   add = $((a + b))
   echo sum of a and b is $add
   sub = $((a - b))
   echo Subtraction of a and b is $sub
   mul = $((a * b))
   echo product of a and b is $mul
   div = $((a / b))
   echo division of a and b is $div
mod = $((a % b))
   echo remainder when a is divided b is $mod
((++a))
   echo Increment operator when applied on "a" results into a = $a
((--b))
echo Decrement operator when applied on "b" results into b = $b
sum of a and b is 55
Subtraction of a and b is 9
product of a and b is 736
division of a and b is 1
remainder when a is divided b is 9
Increment operator when applied on a results into a = 33
Decrement operator when applied on b results into b = 24
The relational operator in shell scripting defines the relations between operands. The return value of these are either true or false depending on the operator and operands. There are 6 types of valid relational operators in shell scripting −
== operator is the operator that equates the values of two operators. It returns true if the values are equal and returns false otherwise.
== operator is the operator that equates the values of two operators. It returns true if the values are equal and returns false otherwise.
!= operator is the operator that equates the values of two operators and check for their inequality. It returns true if the values are not equal and returns false otherwise.
!= operator is the operator that equates the values of two operators and check for their inequality. It returns true if the values are not equal and returns false otherwise.
< operator is the less than operator comparing the values of two operators. If first operend’s value is smaller than seconds one then operator returns true otherwise returns false.
< operator is the less than operator comparing the values of two operators. If first operend’s value is smaller than seconds one then operator returns true otherwise returns false.
<= operator is less than or equal to operator that compares the values of two operators. If first operend’s value is smaller than or equal to seconds one then operator returns true otherwise returns false.
<= operator is less than or equal to operator that compares the values of two operators. If first operend’s value is smaller than or equal to seconds one then operator returns true otherwise returns false.
>operator is the greater than operator comparing the values of two operators. If first operend’s value is larger than seconds one then operator returns true otherwise returns false.
>operator is the greater than operator comparing the values of two operators. If first operend’s value is larger than seconds one then operator returns true otherwise returns false.
>= operator is greater than or equal to operator that compares the values of two operators. If first operend’s value is larger than or equal to seconds one then operator returns true otherwise returns false.
>= operator is greater than or equal to operator that compares the values of two operators. If first operend’s value is larger than or equal to seconds one then operator returns true otherwise returns false.
a = 32
b = 67
if(( $a==$b ))
then
   echo a is equal to b.
else
   echo a is not equal to b.
fi
if(( $a!=$b ))
then
   echo a is not equal to b.
else
   echo a is equal to b.
fi
if(( $a<$b ))
then
   echo a is less than b.
else
   echo a is not less than b.
fi

if(( $a<=$b ))
then
   echo a is less than or equal to b.
else
   echo a is not less than or equal to b.
fi
if(( $a>$b ))
then
   echo a is greater than b.
else
   echo a is not greater than b.
fi
if(( $a>=$b ))
then
   echo a is greater than or equal to b.
else
   echo a is not greater than or equal to b.
fi
a is not equal to b.
a is not equal to b.
a is less than b.
a is less than or equal to b.
a is not greater than b.
a is not greater than or equal to b.
Boolean operator also known as logical operators are used to perform logical operations in shell scripting. There are 3 types of valid logical operators in shell scripting −
Logical AND (&&) calculates the logic AND of the value that boolean. It returns true if both operands are true, otherwise false.
Logical AND (&&) calculates the logic AND of the value that boolean. It returns true if both operands are true, otherwise false.
Logical OR (||) calculates logical OR operation of boolean operands. It returns false if both operands are false otherwise true.
Logical OR (||) calculates logical OR operation of boolean operands. It returns false if both operands are false otherwise true.
Logical Not Equal to (!) calculates the negation of the single operator passed. If the value of operand is true it returns false otherwise true.
Logical Not Equal to (!) calculates the negation of the single operator passed. If the value of operand is true it returns false otherwise true.
a = true
b = false
if(($a == "true" & $b == "true" ))
then
   echo Both are true.
else
   echo Both are not true.
fi
if(($a == "true" || $b == "true" ))
then
   echo Atleast one of them is true.
else
   echo None of them is true.
fi
if(( ! $a == "true" ))
then
   echo "a" was intially false.
else
   echo "a" was intially true.
fi
Both are not true.
Atleast one of them is true
a was intially true.
Bitwise operator are the operators that perform bitwise operations on bit variables. There are 6 types of bitwise operators in shell scripting −
Bitwise AND (&) is the operator that does the binary AND operation on the bits of the operands i.e. each bit of first variable is operated with respective bit of second operator.
Bitwise AND (&) is the operator that does the binary AND operation on the bits of the operands i.e. each bit of first variable is operated with respective bit of second operator.
Bitwise OR (|) is the operator that does the binary OR operation on the bits of the operands i.e. each bit of first variable is operated with respective bit of second operator.
Bitwise OR (|) is the operator that does the binary OR operation on the bits of the operands i.e. each bit of first variable is operated with respective bit of second operator.
Bitwise XOR (^) is the operator that does the binary XOR operation on the bits of the operands i.e. each bit of first variable is operated with respective bit of second operator.
Bitwise XOR (^) is the operator that does the binary XOR operation on the bits of the operands i.e. each bit of first variable is operated with respective bit of second operator.
Bitwise complement (~) is the operator that does the binary NOT operation on the bits of the operands i.e. each bit of first variable is operated with respective bit of second operator.
Bitwise complement (~) is the operator that does the binary NOT operation on the bits of the operands i.e. each bit of first variable is operated with respective bit of second operator.
Bitwise Left Shift (<<) is the operator that shifts the bits of the operand to the left by n times specified at the right of the operator.
Bitwise Left Shift (<<) is the operator that shifts the bits of the operand to the left by n times specified at the right of the operator.
Bitwise Left Shift (>>) is the operator that shifts the bits of the operand to the right by n times specified at the right of the operator.
Bitwise Left Shift (>>) is the operator that shifts the bits of the operand to the right by n times specified at the right of the operator.
a = 14
b = 67
bitwiseAND=$(( a&b ))

echo Bitwise AND of a and b is $bitwiseAND
bitwiseOR=$(( a|b ))

echo Bitwise OR of a and b is $bitwiseOR
bitwiseXOR=$(( a^b ))

echo Bitwise XOR of a and b is $bitwiseXOR
bitiwiseComplement=$(( ~a ))

echo Bitwise Compliment of a is $bitiwiseComplement
leftshift=$(( a<<1 ))

echo Left Shift of a is $leftshift
rightshift=$(( b>>1 ))

echo Right Shift of b is $rightshift
Bitwise AND of a and b is 2
Bitwise OR of a and b is 79
Bitwise XOR of a and b is 77
Bitwise Compliment of a is -15
Left Shift of a is 28
Right Shift of b is 33
The file test operators are used to test particular properties of the file. Some of the file test operators are :
-b operator is used to check if the specified file is a block special file or not. If the file is a block special file then the function returns true otherwise returns false.
-b operator is used to check if the specified file is a block special file or not. If the file is a block special file then the function returns true otherwise returns false.
-s operator is the operator that is used to check the size of the given file. If the file size is greater than 0, it returns true otherwise returns false.
-s operator is the operator that is used to check the size of the given file. If the file size is greater than 0, it returns true otherwise returns false.
-r operator is the operators that check if the access to read file contents is granted or not. If read access is granted than it returns true otherwise false.
-r operator is the operators that check if the access to read file contents is granted or not. If read access is granted than it returns true otherwise false.
-w operator is the operators that check if the access to write into file is granted or not. If write access is granted than it returns true otherwise false.
-w operator is the operators that check if the access to write into file is granted or not. If write access is granted than it returns true otherwise false.
-x operator is the operators that check if the access to execute the file is granted or not. If execution access is granted than it returns true otherwise false.
-x operator is the operators that check if the access to execute the file is granted or not. If execution access is granted than it returns true otherwise false.