Unix "$ @" als Parameter


0

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.

Antworten:


5

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

Sie können es btw durch die Suche finden \$@in man bash. Sie müssen dem Dollarzeichen entkommen.
Daniel Beck
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.