$*和$@ 的区别


$* 和 $@ 都表示传递给函数或脚本的所有参数

当 $* 和 $@ 不被双引号" "包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。

但是当它们被双引号" "包含时,就会有区别了:
"$*"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据
"$@"仍然将每个参数都看作一份数据,彼此之间是独立的。

比如传递了 5 个参数,那么对于"$*"来说,这 5 个参数会合并到一起形成一份数据,它们之间是无法分割的;

而对于"$@"来说,这 5 个参数是相互独立的,它们是 5 份数据。

如果使用 echo 直接输出"$*"和"$@"做对比,是看不出区别的;但如果使用 for 循环来逐个输出数据,立即就能看出区别来。

 

 
 

[root@localhost test]# sh dis_2.sh zheng huanug hon xiao bai
print each param from "$*"
zheng huanug hon xiao bai
print each param from "$@"
zheng
huanug
hon
xiao
bai



内容:
#!/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
 

可以看到$@部分是独立的,并不是一个整体。 $*是一个独立的整体


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM