Was $@
bedeutet "Funktionsparameter eines Bash-Skripts"?
Beispiel:
function foo()
{
echo "$@" 1>&2;
}
Die $@
Variable wird auf alle Parameter erweitert, die beim Aufrufen der Funktion verwendet werden
function foo()
{
echo "$@"
}
foo 1 2 3
würde anzeigen 1 2 3
. Wenn es nicht in einer Funktion verwendet wird, werden alle Parameter angegeben, die beim Aufrufen des Skripts verwendet werden. Weitere Informationen finden Sie in der bash-Handbuchseite .
$ @ ist eine der beiden "Positionsparameter" -Darstellungen in der Bash, die andere ist $ *.
Sowohl $ @ als auch $ * sind interne Bash-Variablen, die alle Parameter darstellen, die an eine Funktion oder ein Skript übergeben wurden. Mit einem wesentlichen Unterschied hat $ @ jeden Parameter als separate Zeichenfolge in Anführungszeichen, während $ * alle Parameter als einzelne Zeichenfolge hat. Dieser Unterschied wird im folgenden Code gezeigt:
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
Ausgabe:
Using $@
a
b
c
Using $*
a b c
Beachten Sie, dass bei einem Aufruf mit $ * genau ein Argument an foo () übergeben wird, bei $ @ jedoch drei Argumente an foo ().
Weitere Informationen: http://tldp.org/LDP/abs/html/internalvariables.html#APPREF
Ich gehe davon aus, dass dies bedeutet, dass alle Eingabeparameter als Hash verwendet werden. Wenn es also 3 Eingabeparameter gibt, stehen diese in der Funktion in Form von $ 1, $ 2, $ 3 zur Verfügung
$1
,$2
usw. wie auch immer, unabhängig von$@
.