Sorry. I won't top post again. I tried your way but ARG_OPTS only accept the first argument and ignore the rest.
Mike Frysinger wrote: > > 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 > > > > -- View this message in context: http://www.nabble.com/how-to-pass-arguments-with-space-inside--tp22978918p22981193.html Sent from the Gnu - Bash mailing list archive at Nabble.com.