$*与$@中Shell中有什么区别-创新互联

这篇文章给大家介绍$*与$@中Shell中有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创新互联是一家集网站建设,黑河企业网站建设,黑河品牌网站建设,网站定制,黑河网站建设报价,网络营销,网络优化,黑河网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

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


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


"∗ " 会 将 所 有 的 参 数 从 整 体 上 看 做 一 份 数 据 , 而 不 是 把 每 个 参 数 都 看 做 一 份 数 据 。 " *"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。 "∗"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。"@"仍然将每个参数都看作一份数据,彼此之间是独立的。

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

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

示例


#!/bin/bash

echo "-- \$* 演示 ---"
for i in "$*"; do
 echo $i
done

echo "-- \$@ 演示 ---"
for i in "$@"; do
 echo $i
done

执行脚本,输出结果如下所示:

$ chmod +x test.sh
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $@ 演示 ---
1
2
3

关于$*与$@中Shell中有什么区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


标题名称:$*与$@中Shell中有什么区别-创新互联
分享链接:http://pwwzsj.com/article/dchdhe.html