tab
, linefeed
or cariage return
might be expected SH-1012Detected 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"