$*与$@变量都提供了对所有参数的快速访问,这两个都能够在单个变量中存储所有的命令行参数。
$*变量会将命令行上提供的所有参数当作单个单词保存,其会被当作单个参数,而不是多个对象。
$@变量会将命令行上提供的所有参数当作同意个字符串中的多个独立的单词。他允许遍历所有的值,将提供的每个参数分割开来。这通常通过for命令完成。
下面看一个例子就明白啦~
root@wl-MS-7673:/home/wl/桌面/shell# cat -n test.sh
1 #!/bin/bash
2 echo "\$* and \$@ test"
3 echo "\$* is:"$* #这里两个输出结果是一样的
4 echo "\$@ is:"$@ #
5 count=0
6 for var in "$*"
7 do
8 count=$[$count+1]
9 echo "$count:"$var
10 done
11
12 echo "\$* done."
13
14 count=0
15 for var in "$@"
16 do
17 count=$[$count+1]
18 echo "$count:"$var
19 done
20 echo "\$@ done."
root@wl-MS-7673:/home/wl/桌面/shell#
运行输出结果如下:
root@wl-MS-7673:/home/wl/桌面/shell# ./test.sh a b c d e f
$* and $@ test
$* is:a b c d e f
$@ is:a b c d e f
1:a b c d e f
$* done.
1:a
2:b
3:c
4:d
5:e
6:f
$@ done.
root@wl-MS-7673:/home/wl/桌面/shell#
【shell脚本学习】$*与$@,布布扣,bubuko.com
原文:http://blog.csdn.net/hongkangwl/article/details/20916723