分类: 系统运维
2014-06-12 09:43:44
$*
所有的位置参数,被作为一个单词.
注意:"$*"必须被""引用.
$@
与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,
并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的
单词.
注意:"$@"必须被引用.
$@ $*
只在被双引号包起来的时候才会有差异
双引号括起来的情况:
$*将所有的参数认为是一个字段
$@以IFS(默认为空格)来划分字段,如果空格在“”里面,不划分。采用LS的脚本运行./test
1 "2 3" 4 来发现差异
没有括起来的情况是$@和$*一样的,见到IFS就划分字段。还是采用LS的脚本运行./test 1 "2 3"
4 来发现差异
test.sh 的内容如下
#!/bin/bash
echo $@
echo $#done
运行: ./test.sh hello world 得到的结果如下,可以看到最后一行输出的内容是“hello world”:
hello world
2
hello world
hello world
hello
world
hello
world
hello
world
hello
world
hello world