shell脚本中$*和$@的区别

       $*和$@都是用来一次性获取所有脚本参数或者函数参数的,参数都会以字符串的形式返回,如下所示。

#下面是example.sh脚本的代码

#!/bin/bash
s1=$*
s2=$@
echo $s1
echo $s2
for i in $s1;do
    echo $i
done
for i in $s2;do
    echo $i
done



       然后我们用下面的方式运行脚本,或得到相应的输出,如下所示。可以看到,$*和$@两者目前没有体现出任何区别。

./example.sh 1 2 3

##输出如下所示
1 2 3
1 2 3
1
2
3
1
2
3

       实际上$*和$@的区别只体现在循环语境下的双引号引用与否。即在循环语境下,如果是以"$*"的方式获取参数,那么参数将以单个字符串的方式传给循环,所以循环中只会循环一次,并且循环变量i的值是所有参数组成的单个字符串;如果是以"$@"的方式获取参数的话,那么参数将逐个传给循环,所以循环的次数是参数个数,并且每次循环的变量i的值就是相应的参数值。如下所示。

#下面是example.sh脚本的代码

#!/bin/bash
for i in "$*";do
    echo $i
done
for i in "$@";do
    echo $i
done

       上面脚本的运行以及输出如下所示。

./example.sh 1 2 3

##输出如下所示
1 2 3
1
2
3

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值