" "
包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。" "
包含时,就会有区别了:
"$*"
会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。"$@"
仍然将每个参数都看作一份数据,彼此之间是独立的。"$*"
来说,这 5 个参数会合并到一起形成一份数据,它们之间是无法分割的;而对于"$@"
来说,这 5 个参数是相互独立的,它们是 5 份数据。"$*"
和"$@"
做对比,是看不出区别的;但如果使用 for 循环来逐个输出数据,立即就能看出区别来。
编写下面的代码,并保存为 test.sh:
#!/bin/bash echo "print each param from \"\$*\"" for var in "$*" do echo "$var" done echo "print each param from \"\$@\"" for var in "$@" do echo "$var" done运行 test.sh,并附带参数:
[mozhiyan@localhost demo]$ . ./test.sh a b c d
print each param from "$*"
a b c d
print each param from "$@"
a
b
c
d
"$*"
,只循环了 1 次,因为它只有 1 分数据;对于"$@"
,循环了 5 次,因为它有 5 份数据。
本文链接:http://task.lmcjl.com/news/7463.html