Shell脚本中$ *和$ @有什么不同

壳脚本中$ *和$ @有什么不同?针对这个问题,今天小编总结这篇有关的文章,可供感兴趣的小伙伴们参考借鉴,希望对大家有所帮助。

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

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

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

如果使用回声直接输出“$ “和“@"美元;做对比,是看不出区别的;但如果使用的循环来逐个输出数据,立即就能看出区别来。
关于为循环的用法请猛击:外壳循环和为int循环详解
编写下面的代码,并保存为test.sh:
# !/bin/bash
回声“打印每个参数从\“\ $
\““
的var“$ ,

做呼应“var"美元;

完成回声“打印每个参数从\“\ $ @ \““
的var“@"美元;

做呼应“var"美元;

完成运行测试。sh,并附带参数:
[mozhiyan@localhost演示]美元/测试。sh a b c d
打印每个参数从“$
,
a b c d
打印每个参数从“@"美元;

b
c
d

从运行结果可以发现,对于“*“美元,只循环了1次,因为它只有1分的数据,对于“@"美元,循环了5次,因为它有5份数据。

看完上述内容,你们对大概了解了吗?如果想了解更多相关文章内容,欢迎关注行业资讯频道,感谢各位的阅读!

Shell脚本中$ *和$ @有什么不同