mirror of
git://git.sv.gnu.org/autoconf
synced 2025-01-06 10:25:53 +08:00
docs: mention bash bug with word splitting
* doc/autoconf.texi (Shell Substitutions): Document bash bug, and zsh default behavior difference. Reported by Ralf Wildenhues.
This commit is contained in:
parent
608c89c8c6
commit
5adc15b7b6
@ -1,5 +1,10 @@
|
|||||||
2010-08-03 Eric Blake <eblake@redhat.com>
|
2010-08-03 Eric Blake <eblake@redhat.com>
|
||||||
|
|
||||||
|
docs: mention bash bug with word splitting
|
||||||
|
* doc/autoconf.texi (Shell Substitutions): Document bash bug, and
|
||||||
|
zsh default behavior difference.
|
||||||
|
Reported by Ralf Wildenhues.
|
||||||
|
|
||||||
docs: mention ksh bug with function syntax
|
docs: mention ksh bug with function syntax
|
||||||
* doc/autoconf.texi (Shell Functions): Document ksh93 limitation.
|
* doc/autoconf.texi (Shell Functions): Document ksh93 limitation.
|
||||||
|
|
||||||
|
@ -15283,6 +15283,32 @@ $ @kbd{echo "`echo \"hello\"`"}
|
|||||||
There is just no portable way to use double-quoted strings inside
|
There is just no portable way to use double-quoted strings inside
|
||||||
double-quoted back-quoted expressions (pfew!).
|
double-quoted back-quoted expressions (pfew!).
|
||||||
|
|
||||||
|
Bash 4.1 has a bug where quoted empty strings adjacent to unquoted
|
||||||
|
parameter expansions are elided during word splitting. Meanwhile, zsh
|
||||||
|
does not perform word splitting except when in Bourne compatibility
|
||||||
|
mode. In the example below, the correct behavior is to have five
|
||||||
|
arguments to the function, and exactly two spaces on either side of the
|
||||||
|
middle @samp{-}, since word splitting collapses multiple spaces in
|
||||||
|
@samp{$f} but leaves empty arguments intact.
|
||||||
|
|
||||||
|
@example
|
||||||
|
$ @kbd{bash -c 'n() @{ echo "$#$@@"; @}; f=" - "; n - ""$f"" -'}
|
||||||
|
3- - -
|
||||||
|
$ @kbd{ksh -c 'n() @{ echo "$#$@@"; @}; f=" - "; n - ""$f"" -'}
|
||||||
|
5- - -
|
||||||
|
$ @kbd{zsh -c 'n() @{ echo "$#$@@"; @}; f=" - "; n - ""$f"" -'}
|
||||||
|
3- - -
|
||||||
|
$ @kbd{zsh -c 'emulate sh;}
|
||||||
|
> @kbd{n() @{ echo "$#$@@"; @}; f=" - "; n - ""$f"" -'}
|
||||||
|
5- - -
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
You can work around this by doing manual word splitting, such as using
|
||||||
|
@samp{"$str" $list} rather than @samp{"$str"$list}.
|
||||||
|
|
||||||
|
There are also portability pitfalls with particular expansions:
|
||||||
|
|
||||||
@table @code
|
@table @code
|
||||||
@item $@@
|
@item $@@
|
||||||
@cindex @samp{"$@@"}
|
@cindex @samp{"$@@"}
|
||||||
|
Loading…
Reference in New Issue
Block a user