diff --git a/SC2328.md b/SC2328.md new file mode 100644 index 0000000..9c228a3 --- /dev/null +++ b/SC2328.md @@ -0,0 +1,36 @@ +## 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: + +```sh +var=$(tr -d ':' < input.txt > output.txt) +``` + +### Correct code: + +```sh +# 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! \ No newline at end of file