a=$(b | c).
sum=find | wc -l
sum=$(find | wc -l)
The intention in this code was that
sum would in some way get the value of the command
find | wc -l.
| has precedence over the
=, so the command is a two stage pipeline consisting of
sum=find is a plain string assignment. Since it happens by itself in an independent pipeline stage, it has no effect: it produces no output, and the variable disappears when the pipeline stage finishes. Because the assignment produces no output,
wc -l will count 0 lines.
To instead actually assign a variable with the output of a command, command substitution
$(..) can be used.
None. This warning is triggered whenever the first stage of a pipeline is a single assignment, which is never correct.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.