You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ShellCheck detected a find command with a redirection in the middle.
This redirection may have been intended to apply only to a specific action like -exec or -print, but it does in fact apply to the entire find command:
# This command
find . -name '*.ppm' -exec pnmtopng {} > {}.png \;
# Is the same as this
{
find . -name '*.ppm' -exec pnmtopng {} \;
} > {}.png
To perform a redirection per action, rewrite it with e.g. -exec sh -c '...' _ {} \;
Exceptions:
If the redirection is something like > /dev/null where you don't mind it applying to the whole find and not individual results, you can move the redirection to the end of command to make it clear to ShellCheck (and humans) that it's not meant per command:
find . -exec foo {} > /dev/null \; # Ambiguous syntax. Is it per -exec or not?
find . -exec foo {} \; > /dev/null # Identical command with clear intent.
There is no difference in behavior between the two.
Related resources:
Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!