Que signifie $ @ en tant que paramètre de fonction de script bash


16

Que $@signifie un paramètre de fonction de script bash?

Exemple:

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

Réponses:


20

La $@variable s'étend à tous les paramètres utilisés lors de l'appel de la fonction, donc

function foo()
{
    echo "$@"
}

foo 1 2 3

afficherait 1 2 3. S'il n'est pas utilisé dans une fonction, il spécifie tous les paramètres utilisés lors de l'appel du script. Voir la page de manuel de bash pour plus d'informations.


11

$ @ est l'une des deux représentations de "paramètre positionnel" en bash, l'autre étant $ *.

$ @ Et $ * sont des variables bash internes qui représentent tous les paramètres passés dans une fonction ou un script, avec une différence clé , $ @ a chaque paramètre comme une chaîne séparée entre guillemets, tandis que $ * a tous les paramètres comme une seule chaîne. Cette différence est indiquée dans le code suivant:

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

Production:

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

Notez que lorsqu'il est appelé avec $ *, exactement un argument est passé à foo (), mais avec $ @ trois arguments sont passés à foo ().

Plus d'informations: http://tldp.org/LDP/abs/html/internalvariables.html#APPREF


0

Je suppose que cela signifie prendre comme hachage tous les paramètres d'entrée. Donc, s'il y a 3 paramètres d'entrée, ils seront disponibles dans la fonction sous la forme de $ 1, $ 2, $ 3


2
Non, c'est une variable interne signifiant tous les paramètres donnés à une fonction. Ils sont disponibles en tant que $1, $2etc de toute façon, indépendamment de $@.
terdon
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.