Skip to content
Joachim Ansorg edited this page Nov 12, 2021 · 2 revisions

Redirecting to echo, a command that doesn't read stdin. Bad quoting or missing xargs?

Problematic code:

echo << eof
  Hello World
eof

Correct code:

cat << eof
  Hello World
eof

Rationale:

You are redirecting to one of several commands that don't read from stdin.

This may happen when:

  • Confusing one command for another, e.g. using echo where cat was intended.
  • Incorrectly quoting angle brackets, e.g. using echo <p>Hello which tries to read from a file p.
  • Missing xargs, e.g. mv -t dir < files instead of xargs mv -t dir < files (or more safely, tr '\n' '\0' < files | xargs -0 mv -t dir), because stdin should be passed as parameters.

Check your logic, and rewrite the command so data is passed correctly.

Exceptions:

If you've overridden a command to return output, you can either rename it to make this obvious, or ignore this message.

ShellCheck

Each individual ShellCheck warning has its own wiki page like SC1000. Use GitHub Wiki's "Pages" feature guerraart8 to find a specific , or see Checks.

Clone this wiki locally