Skip to content

Files

Latest commit

 

History

History
39 lines (25 loc) · 1.09 KB

SC2216.md

File metadata and controls

39 lines (25 loc) · 1.09 KB

Pattern: Piping to command that does not read from stdin

Issue: -

Description

You are piping 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.

Example of incorrect code:

ls | echo                      # Want to print result
cat files | rm                 # Want to delete items from a file
find . -type f | xargs cp dir  # Want to process 'find' output

Example of correct code:

ls
cat files | while IFS= read -r file; do rm -- "$file"; done
find . -type f -exec cp {} dir \;

Exceptions

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

Further Reading