mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
POSIX compliance fix: apply 'set -u' to $1, $2, ...
POSIX requires[*] that expanding any unset parameter other than $@ and $* is an error when 'set -u'/'set -o nounset' is active. However, on ksh93, $1, $2, ... were exempt as well. That is a bug. [*] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_25 src/cmd/ksh93/sh/macro.c: - varsub(): Backport code for handling 'set -u' for positional parameters from the ast 2016-10-01-beta branch. src/cmd/ksh93/tests/options.sh: - Add relevant regression tests. src/cmd/ksh93/sh.1: - Document that $@ and $* are exempt from 'set -u'. (cherry picked from commit f954c6be0748c4c38a680a75f27564965fbd328e)
This commit is contained in:
parent
e2a648b41f
commit
36da314c9e
5 changed files with 22 additions and 1 deletions
|
@ -512,6 +512,9 @@ $SHELL -uc 'var=foo;unset var;: ${!var}' >/dev/null 2>&1 && err_exit '${!var} sh
|
|||
$SHELL -uc 'var=foo;unset var;: ${#var}' >/dev/null 2>&1 && err_exit '${#var} should fail with set -u'
|
||||
$SHELL -uc 'var=foo;unset var;: ${var-OK}' >/dev/null 2>&1 || err_exit '${var-OK} should not fail with set -u'
|
||||
$SHELL -uc 'var=foo;nset var;: ${var:-OK}' >/dev/null 2>&1 || err_exit '${var:-OK} should not fail with set -u'
|
||||
(set -u -- one two; : $2) 2>/dev/null || err_exit "an unset PP failed with set -u"
|
||||
(set -u -- one two; : $3) 2>/dev/null && err_exit "a set PP failed to fail with set -u"
|
||||
(set -u --; : $@ $*) 2>/dev/null || err_exit '$@ and/or $* fail to be exempt from set -u'
|
||||
|
||||
z=$($SHELL 2>&1 -uc 'print ${X23456789012345}')
|
||||
[[ $z == *X23456789012345:* ]] || err_exit "error message garbled with set -u got $z"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue