Skip to content
koalaman edited this page Jul 4, 2017 · 4 revisions

Backslash is literal in "\n". Prefer explicit escaping: "\\n".

Problematic code:

printf "%s\n" "Hello"

Correct code:

printf "%s\\n" "Hello"

or alternatively, with single quotes:

printf '%s\n' "Hello"

Rationale:

In a double quoted string, you have escaped a character that has no special behavior when escaped. Instead, it's invoking the fallback behavior of being interpreted literally.

Instead of relying on this implicit fallback, you should escape the backslash explicitly. This makes it clear that it's meant to be passed as a literal backslash in the string parameter.

Exceptions:

None. This is a stylistic issue which can be ignored.

Before you do -- can you name the 4 characters that are special when escaped in double quotes?

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