Interview Scripting (Bash, Groovy)

What is the difference between $@ and $* when quoted? [Basic]

Answer

When quoted, "$@" expands to separate quoted arguments, while "$*" expands to one string joined by the first character of IFS. For almost all argument forwarding, "$@" is the correct choice.

Technical explanation

"$@" preserves the exact argument list, including arguments containing spaces or empty strings.

"$*" is useful only when intentionally joining all arguments into one string.

Unquoted $@ and $* both undergo word splitting and are usually unsafe.

Hands-on example

set -- "one arg" "two" ""

printf '<%s>\n' "$@" # prints three arguments safely

printf '<%s>\n' "$*" # prints one joined string

wrapper() { real_command "$@"; } # correct forwarding pattern

Preparing for an interview?

Check how well your resume matches the role with our free resume checker— match score, ATS check, and the skills you're missing.

More Scripting (Bash, Groovy) interview questions

← All Scripting (Bash, Groovy) questions