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


16

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

例:

function foo()
{
    echo "$@" 1>&2;
}

Answers:


20

$@变量扩展到所有的参数调用函数时使用,所以

function foo()
{
    echo "$@"
}

foo 1 2 3

将显示1 2 3。如果未在函数内部使用,它将指定调用脚本时使用的所有参数。有关更多信息,请参见bash手册页


11

$ @是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


0

我希望这意味着将所有输入参数作为哈希值。因此,如果有3个输入参数,它们将在函数中以$ 1,$ 2,$ 3的形式提供


2
不,它是一个内部变量,表示所有赋予函数的参数。它们可作为$1$2等等反正不管$@
terdon 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.