$@和$*都代表所有命令行参数,但是二者是有区别的。
$*将命令行上提供的所有参数当作一个参数来保存,$@将命令行上提供的所有参数当作一个字符串中的多个独立的参数来保存。
通常都是在程序中使用$@,并且用双引号引起来。下面举例说明:
以下5个程序的程序名都是test.sh,均执行如下命令:
sh test.sh a b "c d"希望得到的输出是:
a b c d
for var in $* do echo $var done输出:
a b c d
for var in $@ do echo $var done输出:
a b c d
for var in "$*" do echo $var done输出:
a b c d
for var in "$@" do echo $var done输出:
a b c d
while [ -n "$1" ] do echo $1 shift done输出:
a b c d
Bash脚本之命令行参数$@和$*,布布扣,bubuko.com
原文:http://blog.csdn.net/warren912/article/details/20841455