Skip to content
koalaman edited this page Mar 2, 2014 · 7 revisions

Add double quotes around ${@}, otherwise it's just like $* and breaks on spaces.

Problematic code:

cp $@ ~/dir

Correct code:

cp "$@" ~/dir

Rationale:

Double quotes around $@ prevents globbing and word splitting while still expanding to multiple separate arguments.

Let's say you have three 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 and otherfile.jpg

Since the latter is rarely expected or desired, ShellCheck warns about it.

Contraindications

None.

Clone this wiki locally