![ba109faa89f8d8a6d96218d1aa930f83.png](https://img-blog.csdnimg.cn/img_convert/ba109faa89f8d8a6d96218d1aa930f83.png)
Shell 中若当前脚本只是作为一个包装器(wrapper),需要把所有位置参数继续传递给实际的脚本或函数。此时,可以选择特殊参数完成:艾特符号$@
和星号 $*
,它们的基本含义是扩展为所有位置参数。但它们有什么区别呢,下面举例说明。
man文档
关于这两个参数的说明,首先可以在man bash里的PARAMETERS章节下的Special Parameter查看说明,下面是节选:
The shell treats several parameters specially. These parameters may only be referenced; assignment to them is not allowed.
* Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, it expands to a single word with
the value of each parameter separated by the first character of the IFS special variable. That is, "$*" is equivalent to "$1c$2c...",
where c is the first character of the value of the IFS variable. If IFS is unset, the parameters are separated by spaces. If IFS is null,
the parameters are joined without intervening separators.
@ Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, each parameter expands to a sepa-
rate word. That is, "$@" is equivalent to "$1" "$2