O que $ @ significa como um parâmetro da função de script bash?

12

O que significa $@ como um parâmetro da função de script bash?

Exemplo:

function foo()
{
    echo "$@" 1>&2;
}
    
por Dave 29.12.2013 / 15:39

3 respostas

16

A variável $@ se expande para todos os parâmetros usados ao chamar a função, então

function foo()
{
    echo "$@"
}

foo 1 2 3

exibiria 1 2 3 . Se não for usado dentro de uma função, ele especifica todos os parâmetros usados ao chamar o script. Consulte a página de manual do bash para obter mais informações.

    
por 29.12.2013 / 15:47
9

$ @ é uma das duas representações de "parâmetro posicional" no bash, sendo a outra $ *.

Ambos, $ @ e $ * são variáveis bash internas que representam todos os parâmetros passados para uma função ou um script, com uma diferença chave , $ @ tem cada parâmetro como uma string entre aspas separada, enquanto $ * tem todos os parâmetros como uma string única . Essa diferença é mostrada no código a seguir:

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

Saída:

Using $@
a
b
c
Using $*
a b c

Nota, quando chamado com $ *, exatamente um argumento é passado para foo (), mas com $ @ três argumentos são passados para foo ().

Mais informações: link

    
por 21.01.2016 / 06:03
0

Espero que isso signifique tomar como hash todos os parâmetros de entrada. Então, se houver 3 parâmetros de entrada, eles estarão disponíveis dentro da função na forma de $ 1, $ 2, $ 3

    
por 29.12.2013 / 15:44

Tags