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

tech2023-09-27  98

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

#下面是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)