2 SC2053
Joachim Ansorg edited this page 2021-11-12 19:25:50 +01:00

Quote the rhs of = in [[ ]] to prevent glob matching.

Problematic code:

[[ $a = $b ]]

Correct code:

[[ $a = "$b" ]]

Rationale:

When the right-hand side of =, == or != is unquoted in [[ .. ]], it will be treated like a glob.

This has some unexpected consequences like [[ $var = $var ]] being false (for var='[a]'), or [[ $foo = $bar ]] giving a different result from [[ $bar = $foo ]].

The most common intention is to compare one variable to another as strings, in which case the right-hand side must be quoted.

Exceptions:

If you explicitly want to match against a pattern, you can ignore this warning.