[GRASS-user] v.db.connect error (Grass 6.4.0RC4 on OSX 10.5.8)

Glynn Clements glynn at gclements.plus.com
Mon Dec 14 20:09:55 EST 2009


Richard Chirgwin wrote:

> There is a slip in the command-line parsing of v.db.connect.
>  
> The GUI works ok, but the same command, pasted to the command line, 
> produces this:
> 
>  > v.db.connect -o map=CD_act driver=dbf 
> database=$GISDBE/$LOCATION_NAME/$MAPSET/dbf table=cd_act_2 key=cat layer=1
>  >
>  > ERROR: Table <cd_act_2> does not exist in database <///dbf>
> 
> Note the extra slash characters added by v.db.connect here...

This isn't a problem with db.connect, but with the way that you ran it
from the shell.

You need to quote the database= option (with single quotes), otherwise
the shell will interpret $GISDBASE, $LOCATION_NAME, and $MAPSET as
variable substitutions. As these variables aren't defined, they are
replaced by the empty string, giving the result you see.

IOW:

v.db.connect -o map=CD_act driver=dbf 'database=$GISDBASE/$LOCATION_NAME/$MAPSET/dbf' table=cd_act_2 key=cat layer=1

If you run v.db.connect from the GUI, the shell doesn't get involved,
so this isn't an issue.

bash (which I assume that you're using) has quite thorough
documentation (around 80 pages) available via "man bash" or at:

	http://www.gnu.org/software/bash/manual/

While much of that information is only necessary for scripting, it is
important to learn which constructs the shell interprets, and how to
prevent it from doing so.

-- 
Glynn Clements <glynn at gclements.plus.com>


More information about the grass-user mailing list