On Mon, Nov 7, 2011 at 7:23 AM, Peng Yu <pengyu...@gmail.com> wrote: > Hi Clark, > >> What do you mean by "1 long argument"? >> >> [bash-4.2.10] # cat foo.sh >> v=" a b c ( a'b | " >> set -o noglob >> a=( $v ) >> set +o noglob >> for i in "${a[@]}"; do >> echo "$i" >> done >> [bash-4.2.10] # bash foo.sh >> a >> b >> c >> ( >> a'b >> | >> [bash-4.2.10] # > > > I misunderstood the usage of "${args[@]}". I though it returns only > one long argument " a b c ( a'b | ", but it actually expanded to 6 > short arguments "a", "b", "c", "(", "a'b" and "|". Thanks for > clarification. > > > > -- > Regards, > Peng > >
If you use "${args[*]}" (with quotes and an asterisk instead of an at sign), the result is one long argument. Otherwise, it's split. -- Visit serverfault.com to get your system administration questions answered.