Skip to content
Joachim Ansorg edited this page Nov 12, 2021 · 2 revisions

This is interpreted as a command name containing =. Bad assignment or comparison?

Problematic code:

"$var"=42
if "$var"=42
then
  true
fi

Correct code:

var=42
if [ "$var" = 42 ]
then
  true
fi

Rationale:

ShellCheck found a command name containing an unquoted equals sign =. This was likely intended as either a comparison or an assignment.

To compare two values, use e.g. [ "$var" = "42" ]

To assign a value, use e.g. var="42"

Exceptions:

None, though you can quote the = to make ShellCheck ignore it: "$var=42".

Related resources:

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!

ShellCheck

Each individual ShellCheck warning has its own wiki page like S001. Use GitHub "Pages" feature above to find a specific one, or see Checks.

Clone this wiki locally