SC1106 – ShellCheck Wiki

See this page on GitHub

Sitemap


In arithmetic contexts, use < instead of -lt

Similarly, > instead of -gt, <= instead of -le, >= instead of -ge, == instead of -eq, != instead of -ne.

Problematic code:

if (( 2 -lt 3 ))
then
  echo "True"
fi

Correct code:

if (( 2 < 3 ))
then
  echo "True"
fi

Rationale:

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.

Exceptions:

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.