Réponses:
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.
$ @ 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
$1
,$2
etc de toute façon, indépendamment de$@
.