* doc/autoconf.texi (Assignments): Don't read $? after an

assignment.
This commit is contained in:
Akim Demaille 2000-11-30 17:48:50 +00:00
parent 4867f191cb
commit 0f93c89c4e
2 changed files with 23 additions and 9 deletions

View File

@ -1,3 +1,8 @@
2000-11-30 Akim Demaille <akim@epita.fr>
* doc/autoconf.texi (Assignments): Don't read $? after an
assignment.
2000-11-30 Akim Demaille <akim@epita.fr>
* sh.m4 (AS_EXIT): Don't rely on false exiting 1.

View File

@ -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: