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

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

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

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

脚本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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值