<
instead of -lt
Similarly, >
instead of -gt
, <=
instead of -le
, >=
instead of -ge
, ==
instead of -eq
, !=
instead of -ne
.
if (( 2 -lt 3 ))
then
echo "True"
fi
if (( 2 < 3 ))
then
echo "True"
fi
The comparators -lt
, -ge
, -eq
and friends are flags for the test
command aka [
. You are instead using it in an arithmetic context, such as (( .. ))
or $(( .. ))
, where you should be using <
, >=
, ==
etc instead.
In arithmetic contexts, -lt
is simply interpreted as "subtract the value of $lt
", which is clearly not the intention.
If you do want to subtract $lt
you can add a space to make this clear to ShellCheck: echo $((3 - lt))
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.