bash.lang.best-practice.useless-cat.useless-cat

Author
unknown
Download Count*
License
Useless call to 'cat' in a pipeline. Use '<' and '>' for any command to read from a file or write to a file.
Run Locally
Run in CI
Defintion
rules:
- id: useless-cat
pattern-either:
- pattern: |
cat | ...
- patterns:
- pattern: |
cat $ARG | ...
- pattern-not: |
cat ${$SEVERAL_FILES} | ...
- pattern: |
... | cat
- pattern: |
... | cat | ...
message: Useless call to 'cat' in a pipeline. Use '<' and '>' for any command to
read from a file or write to a file.
metadata:
references:
- https://github.com/koalaman/shellcheck/wiki/SC2002
category: best-practice
technology:
- bash
license: Commons Clause License Condition v1.0[LGPL-2.1-only]
severity: WARNING
languages:
- bash
Examples
useless-cat.bash
# ok:useless-cat
a b
# ruleid:useless-cat
cat | a b
# ruleid:useless-cat
cat | a b | c d
# ok:useless-cat
cat file1 file2 | a b
# ok:useless-cat
cat $files | a b
# ruleid:useless-cat
cat file | a b
# ruleid:useless-cat
cat "$file" | a b
# ruleid:useless-cat
a b | cat > file
# ruleid:useless-cat
a b | c d | cat > file
# ruleid:useless-cat
a b | cat | c d
# ruleid:useless-cat
a b | c d | cat | e f | g h
# ruleid:useless-cat
while true; do
a b
done | cat
# ruleid:useless-cat
cat | while true; do
a b
done
Short Link: https://sg.run/pNDN