mirror of
git://git.sv.gnu.org/autoconf
synced 2025-01-30 11:01:45 +08:00
Describe a Solaris /bin/sh bug w.r.t. for loops.
* doc/autoconf.texi (Limitations of Shell Builtins) <for>: Document a bug of the 'for' builtin in Solaris /bin/sh, w.r.t. tokens seeming variable assignment in the list of arguments. Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
7eccc094e8
commit
a20b49a348
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
||||
2010-07-02 Stefano Lattarini <stefano.lattarini@gmail.com>
|
||||
Eric Blake <eblake@redhat.com>
|
||||
|
||||
Describe a Solaris /bin/sh bug w.r.t. for loops.
|
||||
* doc/autoconf.texi (Limitations of Shell Builtins) <for>:
|
||||
Document a bug of the 'for' builtin in Solaris /bin/sh, w.r.t.
|
||||
tokens seeming variable assignment in the list of arguments.
|
||||
Report and final patch by Stefano Lattarini, useful suggestions
|
||||
by Eric Blake.
|
||||
|
||||
2010-06-23 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
Improve VPATH handling in config.status for non-Automake projects.
|
||||
|
@ -16703,6 +16703,44 @@ But keep in mind that Zsh, even in Bourne shell emulation mode, performs
|
||||
word splitting on @samp{$@{1+"$@@"@}}; see @ref{Shell Substitutions},
|
||||
item @samp{$@@}, for more.
|
||||
|
||||
In Solaris @command{/bin/sh}, when the list of arguments of a
|
||||
@command{for} loop starts with @emph{unquoted} tokens looking like
|
||||
variable assignments, the loop is not executed on that tokens:
|
||||
|
||||
@example
|
||||
$ @kbd{/bin/sh -c 'for v in a=b; do echo "$v"; done'}
|
||||
$ @kbd{/bin/sh -c 'for v in a=b d=c; do echo "$v"; done'}
|
||||
$ @kbd{/bin/sh -c 'for v in a=b x; do echo "$v"; done'}
|
||||
x
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
Quoting the "assignment-like" tokens, or preceding them with "normal"
|
||||
tokens, solves the problem:
|
||||
|
||||
@example
|
||||
$ @kbd{/bin/sh -c 'for v in "a=b"; do echo "$v"; done'}
|
||||
a=b
|
||||
$ @kbd{/bin/sh -c 'for v in x a=b; do echo "$v"; done'}
|
||||
x
|
||||
a=b
|
||||
$ @kbd{/bin/sh -c 'for v in x a=b d=c; do echo "$v"; done'}
|
||||
x
|
||||
a=b
|
||||
c=d
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
Luckily enough, the bug is not triggered if the "assignment-like"
|
||||
tokens are the results of a variable expansion (even unquoted):
|
||||
|
||||
@example
|
||||
$ @kbd{/bin/sh -c 'x="a=b"; for v in $x; do echo "$v"; done'}
|
||||
a=b
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
So, at least, the bug should be easy to grep for and to avoid.
|
||||
|
||||
@anchor{if}
|
||||
@item @command{if}
|
||||
|
Loading…
Reference in New Issue
Block a user