<
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.