[GRASS-dev] Re: 'g.gui wxpython' won't work in wingrass as wxgui is a shell script

Glynn Clements glynn at gclements.plus.com
Tue Mar 11 22:08:07 EDT 2008

Ivan Shmakov wrote:

>  >> It may be a stupid question, but what scripting language is proposed
>  >> to replace POSIX Shell in GRASS?
>  > Python.
> 	ACK, thanks.
>  >> The GRASS environment seems to benefit a lot from relying on a
>  >> Shell-like language.  E. g., I could hardly imagine using any
>  >> language other than Shell for the following:
>  >> $ g.mlist type=rast pattern=2008-\*-temperature \
>  >>       (while read r ; do
>  >>            s="$r"-celsius ; r.mapcalc "\"$s\" = \"$r\" - 273.15" ; \
>  >>        done)
> 	Since I don't know Python, could you please show me the script
> 	like the above rewritten in it?

	mlist = Popen(["g.mlist", "type=rast", "pattern=2008-*-temperature"], stdout=PIPE)
	for line in mlist.stdout:
		map = line.rstrip()
		call(["r.mapcalc", "\"%s-celsius\" = \"%s\" - 273.15" % (map, map)])

>  > Interactive command-line use will continue to be through whichever
>  > shell the user prefers, typically bash on Unix (maybe with the odd
>  > csh user) and cmd.exe on Windows
> 	I wonder, how the script above could be rewritten for cmd.exe?

I wouldn't suggest using cmd.exe for scripts. If you want portability,
use e.g. Python; if you don't, VB would probably be preferable to

>  > (with bash for people who prefer Unix but have to use Windows).
>  > But Unix shells suck as programming languages.
> 	Well, perhaps.  But its orientation towards calling external
> 	programs (and the GRASS modules are to be external in the
> 	foreseeable future?) is a property which the majority of the
> 	programming languages (at least of the set I know) don't posess.

This is an advantage for interactive usage. For scripts, having to
explicitly type exec/spawn/popen/etc really isn't an issue. If
actually typing the script takes most of the time, you aren't spending
enough time thinking about what you're typing.

Glynn Clements <glynn at gclements.plus.com>

More information about the grass-dev mailing list