当它们被双引号" "包含时,就会有区别了:
- "$*"会将所有的参数从
整体上看做一份数据
,而不是把每个参数都看做一份数据。、 - "$@"仍然将
每个参数都看作一份数据,
彼此之间是独立的。
∗
所
有
的
位
置
参
数
,
被
作
为
一
个
单
词
.
注
意
:
"
* 所有的位置参数,被作为一个单词. 注意:"
∗所有的位置参数,被作为一个单词.注意:"*“必须被”“引用.
@
与
@ 与
@与*同义,但是每个参数都是一个独立的”“引用字串,这就意味着参数被完整地传递,
并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的
单词.
注意:”$@"必须被引用.
- $*将所有的参数认为是一个字段
- $@以
IFS
(默认为空格
)来划分字段,如果空格在“”里面,不划分。采用LS的脚本运行./test 1 “2 3” 4 来发现差异
没有括起来的情况是 @ 和 @和 @和*一样的,见到IFS就划分字段。还是采用LS的脚本运行./test 1 “2 3” 4 来发现差异
[root@elephant scripts]# cat test.sh
#!/bin/bash
#test_by_ncs_2019-11-18
#!/bin/bash
echo "\"\$*\""
for num in "$*"
do
echo "$num"
done
echo "\"\$@\""
for sum in "$@"
do
echo "$sum"
done