2009-05-08 15 views

risposta

27
echo "$*" 

sarebbe fare quello che vuoi, e cioè la stampa di tutto l'argomenti della riga di comando, separati da uno spazio (o, tecnicamente, qualunque sia il valore di $IFS è). Se si voleva memorizzarlo in una variabile, si potrebbe fare

thevar="$*" 

Se questo non risponde alla tua domanda abbastanza bene, io non sono sicuro che altro dire ...

0

Date un'occhiata alla variabile $*. Combina tutti gli argomenti della riga di comando in uno solo.

echo "$*" 

Questo dovrebbe fare quello che vuoi.

More info here.

24

Se si vuole evitare di avere $ IFS coinvolti, l'uso $ @ (o non si racchiude $ * 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 

Il comportamento IFS segue assegnazioni di variabili, anche.

$ 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 

Si noti che se l'assegnazione a $ IFS sono state fatte dopo l'assegnazione di $ splatvar, poi tutte le uscite sarebbero gli stessi ($ IFS avrebbe alcun effetto nell'esempio "atsplat2").