> is
for string comparisons. Use -gt instead.if [[ $var > 10 ]]
then
echo "Incorrectly triggers when var=5"
fiif [[ $var -gt 10 ]]
then
echo "Correct numerical comparison"
fi< and >, in both [[ and
[ (when escaped) will do a lexicographical comparison, not
a numerical comparison.
This means that [[ 5 > 10 ]] is true because 5 comes
after 10 alphabetically. Meanwhile [[ 5 -gt 10 ]] is false
because 5 does not come after 10 numerically.
If you want to compare numbers by value, use the numerical comparison
operators -gt, -ge, -lt and
-le.
If the strings happen to be version numbers and you're using <, or > to compare them as strings, and you consider this an acceptable thing to do, then you can ignore this warning.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.