DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(autoconf.info.gz) Assignments

Info Catalog (autoconf.info.gz) Shell Substitutions (autoconf.info.gz) Portable Shell (autoconf.info.gz) Special Shell Variables
 
 Assignments
 ===========
 
    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:
 
   1. If the default value is a literal and does not contain any closing
      brace, use:
 
           : ${var='my literal'}
 
   2. If the default value contains no closing brace, has to be
      expanded, and the variable being initialized will never be
      IFS-split (i.e., it's not a list), then use:
 
           : ${var="$default"}
 
   3. If the default value contains no closing brace, has to be
      expanded, and the variable being initialized will be IFS-split
      (i.e., it's a list), then use:
 
           var=${var="$default"}
 
   4. If the default value contains a closing brace, then use:
 
           test "${var+set}" = set || var='${indirection}'
 
    In most cases `var=${var="$default"}' is fine, but in case of doubt,
 just use the latter.   Shell Substitutions, items
 `${VAR:-VALUE}' and `${VAR=VALUE}' for the rationale.
 
Info Catalog (autoconf.info.gz) Shell Substitutions (autoconf.info.gz) Portable Shell (autoconf.info.gz) Special Shell Variables
automatically generated byinfo2html