From 8a98b1ea70536d95d2e98647d350e6629b8dfb39 Mon Sep 17 00:00:00 2001 From: Vidar Holen Date: Sat, 20 Mar 2021 19:08:59 -0700 Subject: [PATCH] Created SC1143 (markdown) --- SC1143.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 SC1143.md diff --git a/SC1143.md b/SC1143.md new file mode 100644 index 0000000..5fcdec0 --- /dev/null +++ b/SC1143.md @@ -0,0 +1,52 @@ +## This backslash is part of a comment and does not continue the line. + +### Problematic code: + +```sh +sed \ + -e "s/HOST/$HOSTNAME/g" \ +# -e "s/USER/$USER/g" \ + -e "s/ARCH/$(uname -m)/g" \ + "$buildfile" +``` + +### Correct code: + + +```sh +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: + +```sh +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. + +### Related resources: + +* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc! \ No newline at end of file