Angenommen, ich habe einen Befehl:
somecommand "$@"
Welche Bedeutung hat $ @? Es muss ein Unix-Trick sein, den ich nicht kenne. Leider kann ich es auch nicht googeln, da es nur aus Interpunktionszeichen besteht.
Dies sind die Parameter des aktuellen Shell-Skripts oder der aktuellen Funktion, die einzeln in Anführungszeichen gesetzt werden.
man bash
sagt:
@
Erweitert die Positionsparameter, beginnend mit eins. Wenn die Erweiterung in doppelten Anführungszeichen erfolgt, wird jeder Parameter zu einem separaten Wort erweitert. Das heißt,"$@"
ist äquivalent zu"$1" "$2" ...
Angesichts des folgenden Skripts:
#!/usr/bin/env bash
function all_args {
# repeat until there are no more arguments
while [ $# -gt 0 ] ; do
# print first argument to the function
echo $1
# remove first argument, shifting the others 1 position to the left
shift
done
}
echo "Quoted:"
all_args "$@"
echo "Unquoted:"
all_args $@
Dies passiert bei der Ausführung:
$ ./demo.sh foo bar "baz qux"
Quoted:
foo
bar
baz qux
Unquoted:
foo
bar
baz
qux
\$@
inman bash
. Sie müssen dem Dollarzeichen entkommen.