The most common test evaluation method is to perform a comparison of two numeric values. In this tutorial, I am giving some Linux if-then-else statement shell script examples for numeric comparison.
The following is the list of Bash shell numeric test operators, which we can use with the if-then-else statement in the shell script.
Bash Shell Numeric Test Operators
Integer Comparisons | Function |
---|---|
-gt | Greater than |
-lt | Less than |
-ge | Greater than or equal to |
-le | Less than or equal to |
-eq | Equal to |
-ne | Not equal to |
Linux if-then-else Statement Numeric Comparison Examples
The following shell script will perform multiple if-then-else condition test on the numeric values.
ifnum1.sh
#!/bin/bash i_a=9 i_b=10 i_c=9 if [ $i_a -eq $i_c ] then echo "$i_a is equal to $i_c" else echo "$i_a is not equal to $i_c" fi if [ $i_a -ge $i_c ] then echo "$i_a is greater than or equal to $i_c" else echo "$i_a is less than from $i_c" fi if [ $i_a -gt $i_b ] then echo "$i_a is greater than $i_b." else echo "$i_a is not greater than $i_b." fi if [ $i_a -le $i_b ] then echo "$i_a is less than or equal to $i_b." else echo "$i_a is greater than $i_b." fi if [ $i_a -lt $i_b ] then echo "$i_a is less than $i_b." else echo "$i_a is greater than $i_b." fi if [ $i_a -ne $i_b ] then echo "$i_a is not equal to $i_b." else echo "$i_a is equal to $i_b." fi
Make the file executable
chmod +x ifnum1.sh
Test
./ifnum1.sh
Output
9 is equal to 9 9 is greater than or equal to 9 9 is not greater than 10. 9 is less than or equal to 10. 9 is less than 10. 9 is not equal to 10.
But if you will try to compare numeric floating-point values, then you won't get the result due to the limitation of bash shell floating-point testing. Below is an example:
ifnum2.sh
#!/bin/bash f_var=9.99 f_var2=9.99 if [ $f_var -eq $f_var2 ] then echo "It is equal." else echo "It is not equal." fi
Make executable
chmod +x ifnum2.sh
Test
./ifnum2.sh
Output
./ifnum2.sh: line 6: [: 9.99: integer expression expected It is not equal.
See even it is equal, but not able to successfully compare. Remember that the only numbers the bash shell can handle are integers. This works fine if you will display it, using echo command.