linux+$*和$@区别,$@与$*的不同之处

本文详细介绍了Shell脚本中$@和$*的区别,通过实例演示了它们在处理命令行参数时的行为。当使用$*时,所有参数被视为一个整体;而$@则保留每个参数的独立性。在调用子脚本时,$1将分别对应于$@和$*中的第一个参数。理解这一差异对于编写有效的Shell脚本至关重要。
摘要由CSDN通过智能技术生成

$@与$*的不同之处

$*: 把我们传递给脚本的参数全部合为一个字节,当成一个字符串或者参数来使用。

$@: 把我们传递给脚本的所有参数,每个参数都为独立字符串,当我们用 \((n) 来调用的时候, 输入参数的位置为第几个,那我们就用用\)n来调用第几个,一对应。

下面我们用代码来看一下这两个的区别:

创建一个简单的脚本让他输出我们输入的多个参数:” $* ”

并且调用自脚本,传给他一个” $@ “的参数。

3c8ce6380daa33c267ccb0e2e66a02de.png

然后再子脚本中写脚本调用并输出3.log(父脚本)” $1 “,也就是第一个参数。

3c8ce6380daa33c267ccb0e2e66a02de.png

运行脚本3.log 输入3个参数分别为a;b;c看运行结果

3c8ce6380daa33c267ccb0e2e66a02de.png

有结果可以看出,子程序在传入” $@ “后,调用” $1 “,只取到了输入的第一个参数的内容,说明多个参数并没有被变为一个字符串。

接下来我们看一下” $* “的调用

4.log这个子程序我们不变。只把3.log中,自脚本调用的参数格式改为” $* “看看结果会如何

3c8ce6380daa33c267ccb0e2e66a02de.png

3c8ce6380daa33c267ccb0e2e66a02de.png

在4.log中,我们输出的还是” $1 “,而这次把我们输入的所有参数都显示了出来。说明我们输入的所有参数被当成一个参数来使用了。

希望通过这个小实验让大家了解二者的区别。

原创文章,作者:phosphor,如若转载,请注明出处:http://www.178linux.com/77690

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值