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.

Clone this wiki locally