Shell

Shell

Made by DeepSource

Detected a literal where tab, linefeed or cariage return might be expected SH-1012

Anti-pattern
Major

Detected a \t, \n or \r in a context where they just become regular letters t, n or r. Most likely, it was intended as a tab, linefeed or carriage return. To generate such characters (plus other less common ones including \a, \f and octal escapes) , use printf as in the example. The exception is for linefeeds that would be stripped by command substitution; in these cases, use a literal quoted linefeed instead.

Problematic code:

# Want tab
var=foo\tbar

or

# Want linefeed
var=foo\nbar

Correct code:

var="foo$(printf '\t')bar"  # As suggested in warning
var="$(printf 'foo\tbar')"  # Equivalent alternative

or

# Literal, quoted linefeed
line="foo
bar"