Script portability

From GRASS-Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Make GRASS shell scripts portable

Portable shell scripting is something of a black art, since with the evolution and derivation of the UNIX shell, the definition of "portable" is perhaps ambiguous.
_Simon__Nattrass_

Guidelines

Conditionals

Conditional with [ ... ] should replaced by __test__

               	         
if [ -f foo.c ] 
then
...
fi

as here:

 
if test -f foo.c
then
...
fi

Arithmetics

Expression with $(( ... ))

 
x=$(($x+1))

are more portable if using __expr__

              
x=`expr $x + 1`


The $(command) expression versus `command`

The $(command) may be supported in many modern Bourne shells but for pure Bourne shells use of `command` is favored, although this method tends to lead to confusion when the backquotes contain the characters $, ` and \. In such cases remember to use the character \ to escape these sequences.


References