$@
作为 bash 脚本函数参数是什么意思?
例子:
function foo()
{
echo "$@" 1>&2;
}
答案1
该$@
变量扩展到调用函数时使用的所有参数,因此
function foo()
{
echo "$@"
}
foo 1 2 3
将显示1 2 3
。如果未在函数内部使用,则它指定调用脚本时使用的所有参数。请参阅bash 手册页了解更多信息。
答案2
$@ 是 bash 中的两个“位置参数”表示形式之一,另一个是 $*。
$@ 和 $* 都是内部 bash 变量,代表传递给函数或脚本的所有参数,一个关键的区别,$@ 将每个参数作为单独的带引号的字符串,而 $* 将所有参数作为单身的字符串。以下代码显示了这种差异:
foo() {
while [ "$1" != "" ]; do
echo $1
shift
done
}
dollar_at () {
foo "$@"
}
dollar_star () {
foo "$*"
}
echo "Using \$@"
dollar_at a b c
echo "Using \$*"
dollar_star a b c
输出:
Using $@
a
b
c
Using $*
a b c
请注意,当使用 $* 调用时,只有一个参数传递给 foo(),但使用 $@ 调用时会有三个参数传递给 foo()。
更多信息:http://tldp.org/LDP/abs/html/internalvariables.html#APPREF
答案3
我预计这意味着将所有输入参数作为哈希值。因此,如果有 3 个输入参数,它们将以 $1、$2、$3 的形式在函数中可用