This redirection takes output away from the command substitution.
(and companion warning "This command substitution will be empty because the command's output gets redirected away" which points to the relevant command substitution)
Problematic code:
var=$(tr -d ':' < input.txt > output.txt)
Correct code:
# If the output should be captured INSTEAD OF being written to file
var=$(tr -d ':' < input.txt)
# If the output should be captured IN ADDITION to being written to file
var=$(tr -d ':' < input.txt | tee output.txt)
# If the output should NOT BE captured at all
tr -d ':' < input.txt > output.txt
Rationale:
ShellCheck has found a command substitution ($(..)
, `..`
) that appears to never capture any output because the command's output is being redirected.
Decide whether you want the output to be captured (by removing the redirection), to go into wherever it's redirected (by not running the command in a command substitution), or both (by using tee
to copy the output to both file and stdout).
Exceptions:
None
Related resources:
- Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!
-
Installation
-
Usage
-
Integrating and extending
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.
<--- This is a global footer, please don't edit it. --->