Skip to content
koalaman edited this page Jul 3, 2017 · 4 revisions

Piping to 'echo', a command that doesn't read stdin. Wrong command or missing xargs?

Problematic code:

find . -type f | echo "Results: "

Correct code:

find . -type f -print0 | xargs -0 echo "Results: "

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 refactoring, leaving a | on the previous line.
  • Missing xargs, because stdin should be passed as positional parameters instead (use xargs -0 if at all possible).

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 above to find a specific one, or see Checks.

Clone this wiki locally