shell中$*和$@的区别
如果想用一个shell脚本把输入参数完整的传给另一个脚本,特别遇到以下这种情况的时候./a.sh 'test 1' 'test 2'。此时就需要使用$@,而不是$*来完成需求。具体运行一下以下脚本就清楚这两条命令之间的区别了。
b.sh
echo pn:$#echo p: $*echo p: $@
?a.sh
echo $#echo './b.sh $*'./b.sh $*echo './b.sh $@'./b.sh $@echo './b.sh "$*"'./b.sh "$*"echo './b.sh "$@"'./b.sh "$@"?
运行./a.sh 'a b' c d
输出结果为
3
./b.sh $*
pn:4
p: a b c d
p: a b c d
./b.sh $@
pn:4
p: a b c d
p: a b c d
./b.sh "$*"
pn:1
p: a b c d
p: a b c d
./b.sh "$@"
pn:3
p: a b c d
p: a b c d
?