You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Similarly, > instead of -gt, <= instead of -le, >= instead of -ge, == instead of -eq, != instead of -ne.
Problematic code:
if((2-lt 3))thenecho"True"fi
Correct code:
if((2<3))thenecho"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))
Related resources:
Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!