-
Notifications
You must be signed in to change notification settings - Fork 1.8k
SC2140
echo "<img src="foo.png" />" > file.html
echo "<img src=\"foo.png\" />" > file.html
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.
If you know that the quotes are ineffectual but you prefer it stylistically, you can ignore this message.