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
ShellCheck found a string used as an argument to a numerical operator like -eq, -ne, -lt, -ge. Such strings will be treated as arithmetic expressions, meaning n will refer to a variable $n, and 24/12 will be evaluated into 2.
In the problematic example, the intention was instead to compare "n" as a string, so it should use the equivalent string operator instead, in this case =.
Exceptions:
It is perfectly valid to use variables as operands. ShellCheck will not flag any value that is an unquoted variable name assigned in the script:
a=42; [[ "a" -eq 0 ]] # Flagged due to quotes
[[ b -eq 0 ]] # Flagged due to not being assigned
c=42; [[ c -eq 0 ]] # Not flagged
However, ShellCheck does not know whether you intended foo/bar to be division or a file path.
If you intended to divide $foo and $bar, you can either make it explicit with [[ $((foo/bar)) -ge 0 ]], or simply ignore the warning.
Related resources:
Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc