On Mon, Mar 04, 2002 at 11:38:02PM +0900, Yohanes Santoso wrote:
> Suppose I have cmd=["echo", "*", "*"], I want to unroll this cmd so
> that when I call system, it calls, in effect, system("echo", "*",
> "*").
>
> The number of argument to echo is known only at run-time. Currently
> I'm concat-ing them into a string with each argument double-quoted to
> prevent shell expansion: cmd="echo \"#{arg1}\"". Any better way?
You have two options, depending on what you want to do:
cmd = ["echo", "*", "*"]
system(*cmd) #=> * *
system(cmd.join(' ')) #=> foo.c foo.rb foo.rb~
I'm not sure how Ruby decides to execute the given command; this has
always been something of a mystery to me.
Paul