When I run
if [[ 10 < 2 ]];
then echo "yes";
else echo "no";
fi
in shell, it returns yes. Why? should it be no?
And When I run
if [[ 20 < 2 ]];
then echo "yes";
else echo "no";
fi
it returns no.
When I run
if [[ 10 < 2 ]];
then echo "yes";
else echo "no";
fi
in shell, it returns yes. Why? should it be no?
And When I run
if [[ 20 < 2 ]];
then echo "yes";
else echo "no";
fi
it returns no.
Because you compare strings according to Lexicographical order and not numbers
You may use [[ 10 -lt 2 ]] and [[ 20 -lt 2 ]]. -lt stands for Less than (<). For Greater than (>) -gt notation can be used instead.
In bash double parenthesis can be used as well for performing numeric comparison:
if ((10 < 2)); then echo "yes"; else echo "no"; fi
The above example will echo no