$@ 作为 bash 脚本函数参数是什么意思

$@ 作为 bash 脚本函数参数是什么意思

$@作为 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 的形式在函数中可用

相关内容