准确来讲, 兩者只有在 soft quote 中才有差异, 否則, 都表示"全部 参数"( $0 除
外)。
举个例來說好了:
若在 command line 上跑 my.sh p1 "p2 p3" p4 的話,
不管是 $@ 還是 $* , 都可得到 p1 p2 p3 p4 就是了。
但是, 如果置於 soft quote 中的話:
"$@" 則可得到 "p1" "p2 p3" "p4" 這三个不同的词段(word)﹔
"$*" 則可得到 "p1 p2 p3 p4" 单一的词段。
#!/bin/bash
#hao.sh
my_fun() { echo "$#" }
echo 'the number ofparameter in "$@" is '$(my_fun "$@")
echo 'the number ofparameter in "$*" is '$(my_fun "$*")
脚本执行命令:./hao.sh p1 p2 p3
执行结果
the number ofparameter in "$@" is 3
the number ofparameter in "$*" is 1