[GRASS-dev] Re: Variable quoting problem (and solution)

Markus Neteler neteler at osgeo.org
Sun Jan 30 08:14:57 EST 2011


On Sun, Jan 30, 2011 at 1:26 PM, Markus Neteler <neteler at osgeo.org> wrote:
> Hi,
>
> in 6.4 (and later) there is still a quoting problem. Together with Helmut,
> I reduced the existing problems to this one (example v.in.geonames):
>
> GRASS 6.4> v.in.geonames input=C:\dl\AT\AT.txt output=vgeotest6
> + '[' -z '/C/Program Files/GRASS 6.4.SVN' ']'
> + '[' input=C:dlATAT.txt '!=' @ARGS_PARSED@ ']'
> ++ basename /C/Program Files/GRASS 6.4.SVN/scripts/v.in.geonames
> basename: extra operand `6.4.SVN/scripts/v.in.geonames'
> Try `basename --help' for more information.
> + CMDLINE=
> + for arg in '"$@"'
> + CMDLINE=' "input=C:dlATAT.txt"'
> + for arg in '"$@"'
> + CMDLINE=' "input=C:dlATAT.txt" "output=vgeotest6"'
> + export CMDLINE
> + exec g.parser '/C/Program Files/GRASS 6.4.SVN/scripts/v.in.geonames'
> input=C:dlATAT.txt output=vgeotest6
> basename: extra operand `6.4.SVN/scripts/v.in.geonames'
> Try `basename --help' for more information.
> FEHLER: File 'C:dlATAT.txt' not found
> GRASS 6.4>
>
> Patching the script like this:
> --- scripts/v.in.geonames/v.in.geonames (revision 45246)
> +++ scripts/v.in.geonames/v.in.geonames (working copy)
> @@ -49,7 +49,7 @@
>
>  # save command line
>  if [ "$1" != "@ARGS_PARSED@" ] ; then
> -    CMDLINE="`basename $0`"
> +    CMDLINE=`basename "$0"`
>     for arg in "$@" ; do
>         CMDLINE="$CMDLINE \"$arg\""
>     done
> @@ -57,7 +57,7 @@
>     exec g.parser "$0" "$@"
>  fi
>
> -PROG="`basename $0`"
> +PROG=`basename "$0"`
>
> we now get
>
> GRASS 6.4> v.in.geonames input="C:\dl\AT\AT.txt" output=vgeotest9
> + '[' -z '/C/Program Files/GRASS 6.4.SVN' ']'
> + '[' 'input=C:\dl\AT\AT.txt' '!=' @ARGS_PARSED@ ']'
> ++ basename '/C/Program Files/GRASS 6.4.SVN/scripts/v.in.geonames'
> + CMDLINE=v.in.geonames
> + for arg in '"$@"'
> + CMDLINE='v.in.geonames "input=C:\dl\AT\AT.txt"'
> + for arg in '"$@"'
> + CMDLINE='v.in.geonames "input=C:\dl\AT\AT.txt" "output=vgeotest9"'
> + export CMDLINE
> + exec g.parser '/C/Program Files/GRASS 6.4.SVN/scripts/v.in.geonames'
> 'input=C:\dl\AT\AT.txt' output=vgeotest9
> ...
>
> which looks fine. So I'll change all scripts accordingly.

Done in r45247 (6.4) and r45248 (6.5).

Markus


More information about the grass-dev mailing list