| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] | 
When setting several variables in a row, be aware that the order of the evaluation is undefined. For instance `foo=1 foo=2; echo $foo' gives `1' with sh on Solaris, but `2' with Bash. You must use `;' to enforce the order: `foo=1; foo=2; echo $foo'.
Don't rely on the following to find `subdir/program':
| PATH=subdir$PATH_SEPARATOR$PATH program | 
as this does not work with Zsh 3.0.6. Use something like this instead:
| (PATH=subdir$PATH_SEPARATOR$PATH; export PATH; exec program) | 
Don't rely on the exit status of an assignment: Ash 0.2 does not change the status and propagates that of the last statement:
| $ false || foo=bar; echo $? 1 $ false || foo=`:`; echo $? 0 | 
and to make things even worse, QNX 4.25 just sets the exit status to 0 in any case:
| $ foo=`exit 1`; echo $? 0 | 
To assign default values, follow this algorithm:
| : ${var='my literal'}
 | 
| : ${var="$default"}
 | 
| var=${var="$default"}
 | 
| test "${var+set}" = set || var='${indirection}'
 | 
In most cases `var=${var="$default"}' is fine, but in case of doubt, just use the latter. See section 10.5 Shell Substitutions, items `${var:-value}' and `${var=value}' for the rationale.
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |