3 SC1133
Joachim Ansorg edited this page 2021-11-12 19:11:53 +01:00

Unexpected start of line. If breaking lines, |/||/&& should be at the end of the previous one.

Problematic code:

dmesg
  | grep "error"

Correct code:

dmesg |
  grep "error"

Rationale:

ShellCheck has found a line that unexpectedly started with |, || or &&. This usually happens when a line is broken incorrectly.

When breaking around a |, || or &&, there are two options:

  • Break the line after this token. dmesg is a complete command by itself, but dmesg | is not so the shell knows to continue on the next line.
  • Use a \ at the end of the previous line to explicitly tell the shell to continue on the next.

Exceptions:

In v0.7.2 and below, this warning triggered incorrectly when starting a line with &>. In these versions, you can either ignore the warning, or move the redirection after the command name.

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