"$@" (with quotes) to prevent whitespace problems.Or: Use "${array[@]}" (with quotes) to prevent whitespace problems.
cp $* ~/dir
cp ${array[*]} ~/dircp "$@" ~/dir
cp "${array[@]}" ~/dir$* and ${array[*]}, unquoted, is subject to
word splitting and globbing.
Let's say you have three arguments or array elements:
baz, foo bar and *
"$@" and "${array[@]}"will expand into
exactly that: baz, foo bar and
*
$* and ${array[*]} will expand into
multiple other arguments: baz, foo,
bar, file.txt and
otherfile.jpg
Since the latter is rarely expected or desired, ShellCheck warns about it.
None.
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.