在linux中,$*和$@有什么区别?

本文详细解释了Shell脚本中$*与$@参数的差异,通过实例展示$*将所有参数作为单个参数传递,而$@则保持参数独立。在使用for循环时,这一区别尤为明显。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看了很多的文章,依然似懂非懂。现在,终于理解了它们两者之间的区别。

$*会把当前脚本的所有参数作为一个参数传递给子脚本。(在英文中,*字符有“所有”的意思)

$@会把当前脚本的所有参数分别作为一个参数传递给子脚本。(在英文中,@字符有“独立”的意思)

脚本start.sh的内容如下:

first.sh $* "this is the first shell"

second.sh $@ "this is the second shell"

执行命令 start.sh a b c d e f g,则实际执行的first.sh和second.sh脚本如下:

first.sh "a b c d e f g" "this is the first shell"(first.sh脚本只有2个参数)

second.sh a b c d e f g "this is the second shell"(second.sh脚本有8个参数)

在使用for命令时,$@传递给for命令多个参数,所以for命令迭代了多次,$*只给for命令传递了1个参数,所以for命令只迭代了1次。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值