Skip to content
koalaman edited this page May 8, 2014 · 7 revisions

The double quotes around this do nothing. Remove or escape them.

Problematic code:

echo "<img src="foo.png" />" > file.html

Correct code:

echo "<img src=\"foo.png\" />" > file.html

Rationale:

This warning triggers when an unquoted literal string is found between two double quoted strings. In many such cases (like the example) the quotes were supposed to be literal, and should be escaped. Without escaping, the quotes are simply removed, resulting in src=foo.png instead of src="foo.png".

In other cases, like echo "$USER"@"$HOSTNAME", they are merely pointless and can be removed for improved readability: echo "$USER@HOSTNAME".

Note that in some of these cases, curly brackets would have to be added: "$lastname"_"$firstname" would be "${lastname}_$firstname", otherwise it'd look for a variable named $lastname_.

It's common to quote individual parts of a path: "$dir"/"$file". This is pointless and hard to read, but rarely indicates a bug. ShellCheck doesn't warn in this particular case.

Contraindications

If you know that the quotes are ineffectual but you prefer it stylistically, you can ignore this message.

ShellCheck

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

Clone this wiki locally