mirror of
git://git.sv.gnu.org/autoconf
synced 2024-11-27 01:49:56 +08:00
Document dash ${*-unset} behavior
* doc/autoconf.texi (Shell Substitutions): Document dash incompatibility. Problem reported by David Caldwell in: http://bugs.gnu.org/22556
This commit is contained in:
parent
5ad3567c3c
commit
5483deb8ae
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user