Shell$*和$@的区别是什么

本篇文章为大家展示了Shell $*和$@的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

站在用户的角度思考问题,与客户深入沟通,找到乌拉特后网站设计与乌拉特后网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、成都做网站、企业官网、英文网站、手机端网站、网站推广、域名申请、虚拟空间、企业邮箱。业务覆盖乌拉特后地区。

Shell $*和$@的区别

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

但是当它们被双引号" "包含时,就会有区别了:

"$*"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。

"$@"仍然将每个参数都看作一份数据,彼此之间是独立的。

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

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

关于 for 循环的用法请猛击:Shell for循环和for int循环详解

编写下面的代码,并保存为 test.sh:

#!/bin/bashecho "print each param from \"\$*\""for var in "$*"do echo "$var"doneecho "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 份数据。

上述内容就是Shell $*和$@的区别是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


本文名称:Shell$*和$@的区别是什么
网站网址:http://ybzwz.com/article/ghheds.html