Unterschied zwischen $* und $@ bei der Shellvariablen

E

e.luft

Mitglied
Thread Starter
Dabei seit
12.04.2006
Beiträge
49
Reaktionspunkte
0
Hallo zusammen,

hätte mal ein Frage: Wo genau liegt eigentlich der Unterschied zwischen den Shellvariablen $* und $@.
Beide Variablen geben mir die Argumente zurück.
 
Hallo,

aus man ksh:
"
$* and $@ have identical meanings when not quoted or when used as a parameter assignment value or as a file name. However, when used as a command argument, "$*" is equivalent to "$1d$2d...", where d is the first character of the IFS parameter, whereas "$@" is equivalent to "$1" "$2" .... Inside back single quote (accent grave) marks (``) \ quotes the characters \, `, and $. If the back single quotes occur within double quotes, \ also quotes the character ".
"
Beispielscript:

Code:
for p in "$@";
do
        echo "->" $p
done
for p in "$*";
do
        echo "->" $p
done
Liefert wie folgt aufgerufen: ./t "a b c" d e

-> a b c
-> d
-> e
-> a b c d e


Gruß
Dirk
 
Zurück
Oben Unten