读书人

shell中$*跟$@的区别

发布时间: 2012-12-18 12:43:41 作者: rapoo

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

?

读书人网 >编程

热点推荐