summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2016-02-05 14:15:07 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2016-02-05 14:15:38 -0800
commit5483deb8ae9a6265ce3af0f4c5c574d44cafbcf5 (patch)
treecd0dc83663301fca4695e4af186251d518aaf5d4
parent5ad3567c3cbd90b4faa6539c35bc4a8c6500f535 (diff)
downloadautoconf-5483deb8ae9a6265ce3af0f4c5c574d44cafbcf5.tar.gz
Document dash ${*-unset} behavior
* doc/autoconf.texi (Shell Substitutions): Document dash incompatibility. Problem reported by David Caldwell in: http://bugs.gnu.org/22556
-rw-r--r--doc/autoconf.texi15
1 files changed, 14 insertions, 1 deletions
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