Bash脚本之命令行参数$@和$*

来源:互联网 发布:mac防火墙设置 编辑:程序博客网 时间:2024/06/05 15:04

$@和$*都代表所有命令行参数,但是二者是有区别的。

$*将命令行上提供的所有参数当作一个参数来保存,$@将命令行上提供的所有参数当作一个字符串中的多个独立的参数来保存。

通常都是在程序中使用$@,并且用双引号引起来。下面举例说明:

以下5个程序的程序名都是test.sh,均执行如下命令:

sh test.sh a b "c d"
希望得到的输出是:

abc d

程序1

for var in $*doecho $vardone
输出:

abcd

程序2

for var in $@doecho $vardone
输出:
abcd

程序3

for var in "$*"doecho $vardone
输出:

a b c d

程序4

for var in "$@"doecho $vardone
输出:

abc d

程序5

while [ -n "$1" ]doecho $1shiftdone
输出:

abc d

只有最后两个程序得到了期望的结果,可以看出双引号的作用是很重要的。

0 0
原创粉丝点击