2009-05-08 4 views

Répondre

27
echo "$*" 

ferait ce que vous voulez, à savoir l'impression sur l'ensemble des arguments de ligne de commande, séparés par un espace (ou, sur le plan technique, quelle que soit la valeur de $IFS est). Si vous voulez stocker dans une variable, vous pouvez faire

thevar="$*" 

Si cela ne je ne sais pas quoi dire d'autre répond pas à votre question assez bien ...

0

Jetez un oeil à la variable $*. Il combine tous les arguments de ligne de commande en un.

echo "$*" 

Cela devrait faire ce que vous voulez.

More info here.

24

Si vous voulez éviter d'avoir $ IFS impliqués, utilisez @ $ de (ou ne placez pas $ * entre guillemets)

$ 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 

Le comportement IFS suit les affectations de variables, aussi.

$ 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 

Notez que si l'affectation à l'IFS $ ont été faites après l'affectation de splatvar $, toutes les sorties seraient les mêmes (IFS aurait $ n'a pas d'effet dans l'exemple « atsplat2 »).

Questions connexes