Skip to content
koalaman edited this page Feb 8, 2014 · 5 revisions

echo won't expand escape sequences. Consider printf.

Problematic code:

echo "Name:\t$value"

Correct code:

printf "Name:\t%s\n" "$value"

Rationale:

Backslash escapes like \t and \n are not expanded by echo, and become literal backslash-t, backslash-n.

printf does expand these sequences, and should be used instead.

Other, non-portable methods include echo -e '\t' and echo $'\t'. ShellCheck will warn if this is used in a script with shebang #!/bin/sh.

If you actually wanted a literal backslash-t, use

echo "\\t"

Contraindications

None

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