Skip to content
Josh Cooley edited this page Apr 11, 2018 · 6 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 5 characters that are special when escaped in double quotes?

Clone this wiki locally