Posted By: Anonymous
I’m unable to get numeric comparisons working:
echo "enter two numbers"; read a b; echo "a=$a"; echo "b=$b"; if [ $a > $b ]; then echo "a is greater than b"; else echo "b is greater than a"; fi;
The problem is that it compares the number from the first digit on, i.e. 9 is bigger than 10, but 1 is greater than 09.
How can I convert the numbers into a type to do a true comparison?
In bash, you should do your check in arithmetic context:
if (( a > b )); then ... fi
For POSIX shells that don’t support
(()), you can use
if [ "$a" -gt "$b" ]; then ... fi
You can get a full list of comparison operators with
help test or