echo "$*"
farebbe quello che vuoi, vale a dire stampare tutti gli argomenti della riga di comando, separati da uno spazio (o, tecnicamente, qualunque sia il valore di $IFS
è). Se volessi memorizzarlo in una variabile, potresti farlo
thevar="$*"
Se questo non risponde abbastanza bene alla tua domanda, non sono sicuro di cos'altro dire...
Se vuoi evitare di coinvolgere $IFS, usa [email protected] (o non racchiudere $* tra virgolette)
$ 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
Anche il comportamento IFS segue le assegnazioni di variabili.
$ 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
Nota che se l'assegnazione a $IFS fosse effettuata dopo l'assegnazione di $splatvar, allora tutti gli output sarebbero gli stessi ($IFS non avrebbe alcun effetto nell'esempio "atsplat2").