Portable scripting

For historical, simple, practical and portable reasons my scripts start normally with "#!/bin/sh", hence I restrict myself to those features available in the Bourne Shell.

The few cases where I would use ksh or bash is if I know this script is targetted at some subset of platforms where that is available and required for the job. If it's not required, then back to good old sh.

I also use "test" rather than [ or [[ as I like to see blatently what a script is really doing. Ie, my model is that

"if" uses it's arguments as a command line and will use the 
then or else clause depending on zero or non zero 
return code of that command.

hence I am more than happy to use "if" with many other programs, not just test or some link to it.