I would like to store all command-line arguments to a Bash script into a single variable I would like to store all command-line arguments to a Bash script into a single variable unix unix

I would like to store all command-line arguments to a Bash script into a single variable


If you want to avoid having $IFS involved, use $@ (or don't enclose $* in quotes)

$ cat atsplatIFS="_"echo "     at: $@"echo "  splat: $*"echo "noquote: "$*$ ./atsplat this is a test     at: this is a test  splat: this_is_a_testnoquote: this is a test

The IFS behavior follows variable assignments, too.

$ cat atsplat2IFS="_"atvar=$@splatvar=$*echo "     at: $atvar"echo "  splat: $splatvar"echo "noquote: "$splatvar$ ./atsplat2 this is a test     at: this is a test  splat: this_is_a_testnoquote: this is a test

Note that if the assignment to $IFS were made after the assignment of $splatvar, then all the outputs would be the same ($IFS would have no effect in the "atsplat2" example).


echo "$*"

would do what you want, namely printing out the entire command-line arguments, separated by a space (or, technically, whatever the value of $IFS is). If you wanted to store it into a variable, you could do

thevar="$*"

If that doesn't answer your question well enough, I'm not sure what else to say...


Have a look at the $* variable. It combines all command line arguments into one.

echo "$*"

This should do what you want.

More info here.