On Thursday 09 April 2009 17:47:59 lehe wrote: > Thanks Mike. please do not top post
> Mike Frysinger wrote: > > On Thursday 09 April 2009 16:46:27 lehe wrote: > >> I was wondering how to pass arguments with space inside. For example, my > >> bash script looks like: > >> > >> #!/bin/bash > >> ARG_OPTS="" > >> while [[ -n "$1" ]]; > >> ARG_OPTS="${ARG_OPTS} $1" > >> shift > >> done > >> > >> If I pass an argument like "--options='-t 0 -v 0'", then it would be > >> splitted by the spaces inside, ie "--options='-t", "0", "-v" and "0". > >> > >> How can I achieve what I wish? > > > > use arrays > > > > $ f=( a "b c" d) > > $ printf '%s\n' "$...@]}" > > a > > b c > > d > > Could you explain it a little? I don't quite get it. How to apply this to > argument parsing? instead of gathering stuff into the variable ARG_OPTS, declare it as a variable and gather it there: declare -a ARG_OPTS while [[ -n $1 ]] ; do arg_opts[${#arg_op...@]}]="$1" shift done then use it like i showed and the argument grouping will be preserved: "${arg_op...@]}" i imagine there are plenty of bash array howtos out there if you google -mike