$@与$*的不同之处
$*: 把我们传递给脚本的参数全部合为一个字节,当成一个字符串或者参数来使用。
$@: 把我们传递给脚本的所有参数,每个参数都为独立字符串,当我们用 \((n) 来调用的时候, 输入参数的位置为第几个,那我们就用用\)n来调用第几个,一对应。
下面我们用代码来看一下这两个的区别:
创建一个简单的脚本让他输出我们输入的多个参数:” $* ”
并且调用自脚本,传给他一个” $@ “的参数。
然后再子脚本中写脚本调用并输出3.log(父脚本)” $1 “,也就是第一个参数。
运行脚本3.log 输入3个参数分别为a;b;c看运行结果
有结果可以看出,子程序在传入” $@ “后,调用” $1 “,只取到了输入的第一个参数的内容,说明多个参数并没有被变为一个字符串。
接下来我们看一下” $* “的调用
4.log这个子程序我们不变。只把3.log中,自脚本调用的参数格式改为” $* “看看结果会如何
在4.log中,我们输出的还是” $1 “,而这次把我们输入的所有参数都显示了出来。说明我们输入的所有参数被当成一个参数来使用了。
希望通过这个小实验让大家了解二者的区别。
原创文章,作者:phosphor,如若转载,请注明出处:http://www.178linux.com/77690