mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-28 15:32:45 +00:00
sh: Exempt $@ and $* from set -u
This seems more useful and will likely be in the next POSIX standard. Also document more precisely in the man page what set -u does (note that $@, $* and $! are the only special parameters that can ever be unset, all the others are always set, although they may be empty).
This commit is contained in:
parent
941538c0f4
commit
64254a667a
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=198454
@ -657,7 +657,7 @@ again: /* jump here after setting a variable with ${var=text} */
|
|||||||
}
|
}
|
||||||
varlen = 0;
|
varlen = 0;
|
||||||
startloc = expdest - stackblock();
|
startloc = expdest - stackblock();
|
||||||
if (!set && uflag) {
|
if (!set && uflag && *var != '@' && *var != '*') {
|
||||||
switch (subtype) {
|
switch (subtype) {
|
||||||
case VSNORMAL:
|
case VSNORMAL:
|
||||||
case VSTRIMLEFT:
|
case VSTRIMLEFT:
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
.\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95
|
.\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95
|
||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
.\"
|
.\"
|
||||||
.Dd May 31, 2009
|
.Dd October 24, 2009
|
||||||
.Dt SH 1
|
.Dt SH 1
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -296,7 +296,10 @@ sh -T -c "trap 'exit 1' 2 ; some-blocking-program"
|
|||||||
.Ed
|
.Ed
|
||||||
.It Fl u Li nounset
|
.It Fl u Li nounset
|
||||||
Write a message to standard error when attempting
|
Write a message to standard error when attempting
|
||||||
to expand a variable that is not set, and if the
|
to expand a variable, a positional parameter or
|
||||||
|
the special parameter
|
||||||
|
.Va \&!
|
||||||
|
that is not set, and if the
|
||||||
shell is not interactive, exit immediately.
|
shell is not interactive, exit immediately.
|
||||||
.It Fl V Li vi
|
.It Fl V Li vi
|
||||||
Enable the built-in
|
Enable the built-in
|
||||||
|
12
tools/regression/bin/sh/expansion/set-u2.0
Normal file
12
tools/regression/bin/sh/expansion/set-u2.0
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# $FreeBSD$
|
||||||
|
|
||||||
|
set -u
|
||||||
|
: $* $@ "$@" "$*"
|
||||||
|
set -- x
|
||||||
|
: $* $@ "$@" "$*"
|
||||||
|
shift $#
|
||||||
|
: $* $@ "$@" "$*"
|
||||||
|
set -- y
|
||||||
|
set --
|
||||||
|
: $* $@ "$@" "$*"
|
||||||
|
exit 0
|
Loading…
Reference in New Issue
Block a user