cp $@ ~/dircp "$@" ~/dirDouble quotes around $@ (and similarly,
${array[@]}) prevents globbing and word splitting of
individual elements, while still expanding to multiple separate
arguments.
Let's say you have four arguments: baz,
foo bar, * and /*/*/*/*
"$@" will expand into exactly that: baz,
foo bar, * and /*/*/*/*
$@ will expand into multiple other arguments:
baz, foo, bar,
file.txt, otherfile.jpg, and (eventually) a
list of most files on the system
Since the latter is rarely expected or desired, ShellCheck warns about it.
When you want globbing of individual elements.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.