Quando não são citados, não há diferença entre $@ e $* . Ambos são iguais a $1 $2 … Mas não faça isso.
Com aspas duplas, "$@" expande cada elemento como um argumento:
"$1""$2"…
enquanto "$*" se expande para todos os elementos mesclados em um único argumento:
"$1c$2c..."
em que c é o primeiro caractere de IFS . Se você desmarcar IFS , c será um espaço.
Você quase sempre deseja "$@" . O mesmo vale para matrizes: "${myarray[@]}"