From: Akim Demaille Date: Thu, 30 Nov 2000 17:48:50 +0000 (+0000) Subject: * doc/autoconf.texi (Assignments): Don't read $? after an X-Git-Tag: autoconf-2.50~360 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f93c89c4e792afbdc3bebf467cd5c43631192f8;p=thirdparty%2Fautoconf.git * doc/autoconf.texi (Assignments): Don't read $? after an assignment. --- diff --git a/ChangeLog b/ChangeLog index 46ec04f1a..e153ab06b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2000-11-30 Akim Demaille + + * doc/autoconf.texi (Assignments): Don't read $? after an + assignment. + 2000-11-30 Akim Demaille * sh.m4 (AS_EXIT): Don't rely on false exiting 1. diff --git a/doc/autoconf.texi b/doc/autoconf.texi index d3027d97d..cac52fd75 100644 --- a/doc/autoconf.texi +++ b/doc/autoconf.texi @@ -5074,15 +5074,6 @@ should workaround them, since version 0.2 is still shipped with many To be compatible with @command{ash} 0.2 @itemize @bullet -@item -don't rely on variable assignment setting @samp{$?} unless the -assignment involves command substitution: - -@example -false || foo=bar && echo "Not portable" -false || foo=`bar` && echo "Portable" -@end example - @item don't use @samp{$?} after expanding empty or unset variables: @@ -5345,6 +5336,24 @@ evaluation is undefined. For instance @samp{foo=1 foo=2; echo $foo} gives @samp{1} with sh on Solaris, but @samp{2} with Bash. You must use @samp{;} to enforce the order: @samp{foo=1; foo=2; echo $foo}. +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: + +@example +$ false || foo=bar; echo $? +1 +$ false || foo=`:`; echo $? +0 +@end example + +@noindent +and to make things even worse, @sc{qnx 4.25} just sets the exit status +to 0 in any case: + +@example +$ foo=`exit 1`; echo $? +0 +@end example To assign default values follow this algorithm: