From: Paul Eggert Date: Fri, 5 Feb 2016 22:15:07 +0000 (-0800) Subject: Document dash ${*-unset} behavior X-Git-Tag: v2.69b~86 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5483deb8ae9a6265ce3af0f4c5c574d44cafbcf5;p=thirdparty%2Fautoconf.git Document dash ${*-unset} behavior * doc/autoconf.texi (Shell Substitutions): Document dash incompatibility. Problem reported by David Caldwell in: http://bugs.gnu.org/22556 --- diff --git a/doc/autoconf.texi b/doc/autoconf.texi index 9eac07ba..b288d59d 100644 --- a/doc/autoconf.texi +++ b/doc/autoconf.texi @@ -16063,7 +16063,8 @@ j a0 @cindex @code{$@{@var{var}-@var{value}@}} Old BSD shells, including the Ultrix @code{sh}, don't accept the colon for any shell substitution, and complain and die. -Similarly for $@{@var{var}:=@var{value}@}, $@{@var{var}:?@var{value}@}, etc. +Similarly for @code{$@{@var{var}:=@var{value}@}}, +@code{$@{@var{var}:?@var{value}@}}, etc. However, all shells that support functions allow the use of colon in shell substitution, and since m4sh requires functions, you can portably use null variable substitution patterns in configure scripts. @@ -16089,6 +16090,18 @@ EOF} b c @end example +Most shells treat the special parameters @code{*} and @code{@@} as being +unset if there are no positional parameters. However, some shells treat +them as being set to the empty string. Posix does not clearly specify +either behavior. + +@example +$ @kbd{bash -c 'echo "* is $@{*-unset@}."'} +* is unset. +$ @kbd{dash -c 'echo "* is $@{*-unset@}."'} +* is . +@end example + According to Posix, if an expansion occurs inside double quotes, then the use of unquoted double quotes within @var{value} is unspecified, and any single quotes become literal characters; in that case, escaping must