[GRASS-dev] Using a multi-"${GIS_OPT_X}" input in a shell for loop

Glynn Clements glynn at gclements.plus.com
Wed Nov 13 07:50:27 PST 2013


Hamish wrote:

> Nikos wrote:
> >> for Image in `echo $GIS_OPT_MSX | tr "," "\ "` ; do echo ${Image}  ;  done
> 
> Curly brackets do nothing to protect the contents of a variable. Using them
> tricks new bash coders into thinking they are protected when they are not.
> To avoid propagating the damaging myth, only use them when you actually need
> them (eg to protect the variable name from following characters, not its contents).

In case it wasn't clear: putting the variable name in braces prevents
subsequent alphanumeric characters from being interpreted as part of
the variable name; e.g.

	echo ${hello}_world

will substitute the value of the variable "hello", whereas

	echo $hello_world

will substitute the value of the variable "hello_world".

But if you want to prevent the substituted value from being re-parsed,
double quotes must be used, e.g.:

	echo "$hello"

Example:

	$ hello='hi     there'
	$ echo $hello
	hi there
	$ echo "$hello"
	hi     there

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


More information about the grass-dev mailing list