echo "$*"
würde tun, was Sie wollen, nämlich die gesamten Befehlszeilenargumente ausgeben, getrennt durch ein Leerzeichen (oder, technisch gesehen, was auch immer der Wert von $IFS
ist ist). Wenn Sie es in einer Variablen speichern wollten, könnten Sie das tun
thevar="$*"
Wenn das Ihre Frage nicht gut genug beantwortet, bin ich mir nicht sicher, was ich noch sagen soll...
Wenn Sie vermeiden möchten, dass $IFS involviert ist, verwenden Sie [email protected] (oder schließen Sie $* nicht in Anführungszeichen ein)
$ cat atsplat
IFS="_"
echo " at: [email protected]"
echo " splat: $*"
echo "noquote: "$*
$ ./atsplat this is a test
at: this is a test
splat: this_is_a_test
noquote: this is a test
Das IFS-Verhalten folgt auch Variablenzuweisungen.
$ cat atsplat2
IFS="_"
[email protected]
splatvar=$*
echo " at: $atvar"
echo " splat: $splatvar"
echo "noquote: "$splatvar
$ ./atsplat2 this is a test
at: this is a test
splat: this_is_a_test
noquote: this is a test
Beachten Sie, dass, wenn die Zuweisung zu $IFS nach der Zuweisung von $splatvar erfolgen würde, alle Ausgaben gleich wären ($IFS hätte im Beispiel "atsplat2" keine Wirkung).