All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.l10n.shellcheck.rules.shellcheck.SC1012.html Maven / Gradle / Ivy

There is a newer version: 2.5.0
Show newest version

\t is just literal t here. For tab, use "$(printf '\t')" 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"

Rationale

ShellCheck has found a \t, \n or \r in a context where they just become regular letter 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.

Other characters like \z generate a [[SC1001]] info message, as the intent is less certain.

Exceptions

None.

Related resources

  • Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!




© 2015 - 2025 Weber Informatics LLC | Privacy Policy