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' "${f[@]}"
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_OPTS[@]}]="$1"
shift
done
then use it like i showed and the argument grouping will be preserved:
"${ARG_OPTS[@]}"
i imagine there are plenty of bash array howtos out there if you google
-mike