"$*"
вернет одну строку со всеми аргументами, разделенными пробелом. "$@"
вернет N строк, по одной на каждый аргумент.
Пример a.sh
:
echo "$@"
Вызов a.sh 1 2 3 4
дает:
1 2 3 4
Другой примериз a.sh
:
printf "%s\n" "$@"
Вызов a.sh 1 '2 2' '3 3 3' '4 4 4 4'
дает:
1
2 2
3 3 3
4 4 4 4
В отличие от a.sh
:
printf "%s\n" "$*"
, который будет печатать:
1 2 2 3 3 3 4 4 4 4