千家信息网

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

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,Shell脚本中$*和$@有什么不同?针对这个问题,今天小编总结这篇有关$*和$@的文章,可供感兴趣的小伙伴们参考借鉴,希望对大家有所帮助。当 $* 和 $@ 不被双引号" "包围时,它们之间没有任何
千家信息网最后更新 2026年11月04日Shell脚本中$*和$@有什么不同

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

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

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

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

如果使用 echo 直接输出"$"和"$@"做对比,是看不出区别的;但如果使用 for 循环来逐个输出数据,立即就能看出区别来。
关于 for 循环的用法请猛击:Shell for循环和for int循环详解
编写下面的代码,并保存为 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 份数据。

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

数据 参数 循环 之间 脚本 内容 引号 文章 独立 输出 运行 不同 代码 兴趣 只有 小伙 小伙伴 整体 更多 空格 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 美国互联网科技巨头监管 互联网金融科技创新 亿账通互联网科技 互联网前沿科技 中国互联网金融科技基金 甘肃拓世互联网科技有限公司 青海省互联网新科技 江苏南京365互联网科技 天速互联网络科技有限公司 深圳国际航运科技和互联网 茂名市互联网科技产业园 荆州市昕露互联网络科技有限公司 阿大互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 坤平互联网科技 深圳市罗太互联网科技有限公司 互联网科技如何创业 小米互联网科技园入驻 互联网科技股为什么大涨 唐山双旺合互联网科技产业园 深圳九邦互联网科技有限公司 互联网科技官网 狮子座互联网科技 北京互联网络科技有限公司 菲比寻常互联网科技 汉立互联网科技有限公司联系电话 河南住房之家互联网科技 众安科技工业互联网合作 从那以后互联网科技有限公司 中国互联网公司的科技投入
0