SC1143 – ShellCheck Wiki

See this page on GitHub

Sitemap


This backslash is part of a comment and does not continue the line.

Problematic code:

sed \
  -e "s/HOST/$HOSTNAME/g"   \
# -e "s/USER/$USER/g"       \
  -e "s/ARCH/$(uname -m)/g" \
  "$buildfile"

Correct code:

sed \
  -e "s/HOST/$HOSTNAME/g"   \
  -e "s/ARCH/$(uname -m)/g" \
  "$buildfile"

# This comment is moved out:
# -e "s/USER/$USER/g"       \

or using backticked, inlined comments:

sed \
  -e "s/HOST/$HOSTNAME/g"   \
`# -e "s/USER/$USER/g"`     \
  -e "s/ARCH/$(uname -m)/g" \
  "$buildfile"

(ShellCheck recognizes this idiom and does not suggest quotes or $(), neither of which would have worked)

Rationale:

ShellCheck found a line continuation followed by a commented line that appears to try to do the same.

Backslash line continuations are not respected in comments, and the line instead simply terminates. This is a problem when commenting out one line in a multi-line command like the example.

Instead, either move the line away from its statement, or use an `# inline comment` in an unquoted backtick command substitution.

Exceptions:

None.


ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.