Let's say I have a bash script called foo.sh.
I'd like to call it like this
foo.sh Here is a bunch of stuff on the command-line
and I'd like it to store all of that text into a single variable and print it out.
So my output would be:
Here is a bunch of stuff on the command-line
How would I do this?
-
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 dothevar="$*"
If that doesn't answer your question well enough, I'm not sure what else to say...
Mark Biek : Easier than I thought. Thanks! -
Have a look at the
$*
variable. It combines all command line arguments into one.echo "$*"
This should do what you want.
-
The command
echo
will take all arguments and print them out:echo Here is a bunch of stuff on the command-line
You should quote the arguments if you have special characters.
-
If you want to avoid having $IFS involved, use $@ (or don't enclose $* in quotes)
$ cat atsplat IFS="_" echo " at: $@" echo " splat: $*" echo "noquote: "$* $ ./atsplat this is a test at: this is a test splat: this_is_a_test noquote: this is a test
The IFS behavior follows variable assignments, too.
$ cat atsplat2 IFS="_" 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_test noquote: 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).
0 comments:
Post a Comment