mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-07-02 01:40:49 +02:00
commit bash-20160520 snapshot
This commit is contained in:
+1
-1
@@ -1,4 +1,4 @@
|
||||
BUILD_DIR=/usr/local/build/chet/bash/bash-current
|
||||
BUILD_DIR=/usr/local/build/bash/bash-current
|
||||
THIS_SH=$BUILD_DIR/bash
|
||||
PATH=$PATH:$BUILD_DIR
|
||||
|
||||
|
||||
@@ -61,3 +61,8 @@ opt: b
|
||||
opt: c
|
||||
opt: z
|
||||
$1 = a
|
||||
./getopts10.sub: line 3: OPTARG: readonly variable
|
||||
OPTARG = x = ?
|
||||
unset x = ?
|
||||
declare -r RO="foo"
|
||||
declare -r RO="foo"
|
||||
|
||||
@@ -39,3 +39,5 @@ ${THIS_SH} ./getopts7.sub -a
|
||||
|
||||
${THIS_SH} ./getopts8.sub
|
||||
${THIS_SH} ./getopts9.sub
|
||||
|
||||
${THIS_SH} ./getopts10.sub
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
set -- -a bb
|
||||
readonly OPTARG
|
||||
getopts :x x
|
||||
|
||||
echo OPTARG = $OPTARG x = $x
|
||||
|
||||
getopts x x
|
||||
echo ${OPTARG-unset} x = $x
|
||||
|
||||
typeset -r RO=foo
|
||||
typeset -n OPTARG=RO
|
||||
|
||||
getopts :x x
|
||||
typeset -p RO
|
||||
|
||||
getopts x x
|
||||
typeset -p RO
|
||||
+69
-20
@@ -166,8 +166,8 @@ declare -i bar="8"
|
||||
8
|
||||
declare -n foo="bar"
|
||||
./nameref10.sub: line 64: typeset: bar: not found
|
||||
./nameref11.sub: line 1: declare: /: invalid variable name for name reference
|
||||
./nameref11.sub: line 2: declare: /: invalid variable name for name reference
|
||||
./nameref11.sub: line 1: declare: `/': invalid variable name for name reference
|
||||
./nameref11.sub: line 2: declare: `/': invalid variable name for name reference
|
||||
./nameref11.sub: line 3: `/': not a valid identifier
|
||||
./nameref11.sub: line 4: declare: `/': not a valid identifier
|
||||
./nameref11.sub: line 5: `/': not a valid identifier
|
||||
@@ -176,29 +176,48 @@ declare -n foo="bar"
|
||||
x
|
||||
|
||||
./nameref11.sub: line 7: ((: `0': not a valid identifier
|
||||
./nameref11.sub: line 8: declare: 0: invalid variable name for name reference
|
||||
./nameref11.sub: line 9: declare: /: invalid variable name for name reference
|
||||
./nameref11.sub: line 10: declare: /: invalid variable name for name reference
|
||||
./nameref11.sub: line 11: `/': not a valid identifier
|
||||
|
||||
./nameref11.sub: line 8: declare: `0': invalid variable name for name reference
|
||||
./nameref11.sub: line 9: declare: `/': invalid variable name for name reference
|
||||
./nameref11.sub: line 10: declare: `/': invalid variable name for name reference
|
||||
/
|
||||
./nameref11.sub: line 12: `/': not a valid identifier
|
||||
./nameref11.sub: line 13: exec: `10': not a valid identifier
|
||||
./nameref11.sub: line 13: r: cannot assign fd to variable
|
||||
./nameref11.sub: line 14: warning: coproc: r: removing nameref attribute
|
||||
./nameref11.sub: line 14: warning: r: removing nameref attribute
|
||||
63
|
||||
./nameref11.sub: line 15: declare: RO: readonly variable
|
||||
./nameref11.sub: line 15: RO: readonly variable
|
||||
./nameref11.sub: line 16: declare: /: invalid variable name for name reference
|
||||
./nameref11.sub: line 16: declare: `/': invalid variable name for name reference
|
||||
/
|
||||
./nameref11.sub: line 17: declare: /: invalid variable name for name reference
|
||||
./nameref11.sub: line 17: declare: `/': invalid variable name for name reference
|
||||
./nameref11.sub: illegal option -- h
|
||||
./nameref11.sub: line 18: getopts: `?': not a valid identifier
|
||||
./nameref11.sub: line 19: warning: r: removing nameref attribute
|
||||
declare -a r=()
|
||||
./nameref11.sub: line 20: declare: r: reference variable cannot be an array
|
||||
./nameref11.sub: line 21: printf: `/': not a valid identifier
|
||||
./nameref12.sub: line 6: declare: /: invalid variable name for name reference
|
||||
./nameref12.sub: line 9: declare: %: invalid variable name for name reference
|
||||
./nameref11.sub: line 23: `': not a valid identifier
|
||||
./nameref11.sub: line 24: declare: `': not a valid identifier
|
||||
./nameref11.sub: line 25: `': not a valid identifier
|
||||
./nameref11.sub: line 26: printf: `': not a valid identifier
|
||||
./nameref11.sub: line 27: declare: `': invalid variable name for name reference
|
||||
declare -r ROVAR="42"
|
||||
./nameref11.sub: line 32: ROVAR: readonly variable
|
||||
./nameref11.sub: line 32: ROVAR: cannot unset: readonly variable
|
||||
declare -r ROVAR="42"
|
||||
./nameref11.sub
|
||||
./nameref11.sub: line 34: `@': not a valid identifier
|
||||
./nameref11.sub
|
||||
declare -n ref="x"
|
||||
./nameref11.sub: line 39: RO: readonly variable
|
||||
declare -r RO_PID
|
||||
./nameref11.sub: line 39: RO: cannot unset: readonly variable
|
||||
declare -r RO="x"
|
||||
./nameref11.sub: line 39: declare: RO_PID: not found
|
||||
./nameref11.sub: line 41: ref_PID: readonly variable
|
||||
declare -r RO2="a"
|
||||
./nameref12.sub: line 6: declare: `/': invalid variable name for name reference
|
||||
./nameref12.sub: line 9: declare: `%': invalid variable name for name reference
|
||||
./nameref12.sub: line 13: `^': not a valid identifier
|
||||
declare -n r
|
||||
declare -a foo
|
||||
@@ -206,15 +225,23 @@ declare -a foo=([0]="7")
|
||||
./nameref12.sub: line 26: declare: `42': not a valid identifier
|
||||
./nameref12.sub: line 27: declare: x: not found
|
||||
declare -nr RO="foo"
|
||||
./nameref12.sub: line 37: `/': not a valid identifier
|
||||
0 0
|
||||
./nameref12.sub: line 38: `/': not a valid identifier
|
||||
|
||||
./nameref12.sub: line 43: declare: `7*6': not a valid identifier
|
||||
./nameref12.sub: line 43: declare: foo: not found
|
||||
./nameref12.sub: line 45: `7*6': not a valid identifier
|
||||
/
|
||||
./nameref12.sub: line 45: declare: `7*6': not a valid identifier
|
||||
./nameref12.sub: line 45: declare: foo: not found
|
||||
./nameref12.sub: line 47: `7*6': not a valid identifier
|
||||
declare -n ref="var"
|
||||
declare -n ref="var"
|
||||
./nameref12.sub: line 74: readonly: `var[0]': not a valid identifier
|
||||
declare -- var="foo"
|
||||
declare -r var2="foo"
|
||||
declare -n ref="var"
|
||||
declare -a var=([0]="foo")
|
||||
./nameref12.sub: line 91: `': not a valid identifier
|
||||
declare -n ref
|
||||
declare -- ref="global"
|
||||
declare -a var=([0]="foo2")
|
||||
./nameref12.sub: line 100: declare: global: not found
|
||||
declare -- a
|
||||
declare -n r="a"
|
||||
declare -- a
|
||||
@@ -227,7 +254,29 @@ declare -n r="a"
|
||||
0
|
||||
declare -n r
|
||||
declare -n r
|
||||
./nameref13.sub: line 88: typeset: 12345: invalid variable name for name reference
|
||||
./nameref13.sub: line 88: typeset: `12345': invalid variable name for name reference
|
||||
declare -n foo
|
||||
./nameref13.sub: line 97: typeset: 12345: invalid variable name for name reference
|
||||
./nameref13.sub: line 97: typeset: `12345': invalid variable name for name reference
|
||||
declare -n foo
|
||||
declare -nx ref="var"
|
||||
var
|
||||
var
|
||||
var
|
||||
var
|
||||
foo
|
||||
foo
|
||||
foo
|
||||
foo
|
||||
before
|
||||
declare -n ref="var"
|
||||
./nameref14.sub: line 23: typeset: var: not found
|
||||
first
|
||||
declare -n ref="var"
|
||||
declare -x var="xxx"
|
||||
invalid
|
||||
declare -n ref="var"
|
||||
declare -x var="5"
|
||||
after
|
||||
declare -n ref="var"
|
||||
./nameref14.sub: line 32: typeset: var: not found
|
||||
declare -n ref="var"
|
||||
|
||||
@@ -128,3 +128,4 @@ ${THIS_SH} ./nameref10.sub
|
||||
${THIS_SH} ./nameref11.sub
|
||||
${THIS_SH} ./nameref12.sub
|
||||
${THIS_SH} ./nameref13.sub
|
||||
${THIS_SH} ./nameref14.sub
|
||||
|
||||
+21
-1
@@ -18,4 +18,24 @@ declare -n r=s; declare -n s; s=/ ; unset -n r; unset -n s
|
||||
declare -n r; getopts x r -h ; unset r; unset -n r
|
||||
declare -n r; mapfile r < /dev/null ; declare -p r; unset r ; unset -n r
|
||||
mapfile r < /dev/null; declare -n r ; unset r ; unset -n r
|
||||
declare -n r; printf -v r /
|
||||
declare -n r; printf -v r / ; unset -n r
|
||||
|
||||
declare -n r; r="" ; unset -n r
|
||||
declare -n r="" ; unset -n r
|
||||
declare -n r; : ${r=} ; unset -n r
|
||||
declare -n r; printf -v r '' ; unset -n r
|
||||
r=""; declare -n r ; unset -n r
|
||||
export r
|
||||
|
||||
# coproc tests, since coproc sets and unsets variables
|
||||
declare -r ROVAR=42
|
||||
declare -p ROVAR; coproc ROVAR { :; }; wait; declare -p ROVAR
|
||||
|
||||
echo ${@:0}; coproc @ { :; }; wait ; echo ${@:0}
|
||||
|
||||
declare -n ref=x; coproc ref { :; }; wait ; declare -p ref
|
||||
unset -n ref ; unset ref
|
||||
|
||||
declare -r RO RO_PID; coproc RO { :; }; declare -p RO_PID; wait; declare -p RO RO_PID
|
||||
|
||||
declare -r RO2=a; declare -n ref_PID=RO2; coproc ref { :; }; wait; declare -p RO2
|
||||
|
||||
@@ -31,6 +31,8 @@ declare -p RO
|
||||
|
||||
unset -n r; unset r
|
||||
|
||||
# the details of this may change; currently we put namerefs and values into
|
||||
# the tempenv if the nameref value is an invalid variable name
|
||||
f() { echo $r; }
|
||||
|
||||
declare -n r
|
||||
@@ -63,3 +65,36 @@ f()
|
||||
declare -p ref
|
||||
}
|
||||
f
|
||||
|
||||
unset ref; unset -n ref
|
||||
unset var
|
||||
|
||||
var=foo
|
||||
typeset -n ref=var[0]
|
||||
readonly ref
|
||||
typeset -p var
|
||||
|
||||
var2=foo
|
||||
typeset -n ref2=var2
|
||||
readonly ref2
|
||||
typeset -p var2
|
||||
|
||||
unset var
|
||||
unset -n ref ref2
|
||||
|
||||
unset var; typeset -n ref=var
|
||||
ref[0]=foo
|
||||
typeset -p ref var
|
||||
unset -n ref
|
||||
|
||||
unset var; typeset -n ref
|
||||
ref[0]=foo
|
||||
typeset -p ref
|
||||
unset -n ref
|
||||
|
||||
ref=global
|
||||
f() { declare -n ref=var; ref[0]=foo1; }; f
|
||||
f() { declare -n ref=var; ref[0]=foo2; }; f
|
||||
declare -p ref var
|
||||
|
||||
declare -p global
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
# exporting namerefs and putting namerefs in temp env post bash-4.3
|
||||
|
||||
typeset -nx ref=var;
|
||||
typeset -p ref
|
||||
|
||||
var=foo; str=''
|
||||
printenv ref # var
|
||||
ref+=$str printenv ref # var
|
||||
ref+="$str" printenv ref # var
|
||||
ref=$ref$str printenv ref # var
|
||||
|
||||
export ref # follows nameref and exports var
|
||||
|
||||
printenv var # foo
|
||||
ref+=$str printenv var # foo
|
||||
ref+="$str" printenv var # foo
|
||||
ref=$ref$str printenv var # foo
|
||||
|
||||
# none of these should change ref; should follow the nameref and export var
|
||||
unset var; unset -n ref; typeset -n ref=var
|
||||
|
||||
echo before
|
||||
typeset -p ref var
|
||||
|
||||
echo first
|
||||
ref=xxx typeset -p ref var
|
||||
|
||||
echo invalid
|
||||
var= ref=5 typeset -p ref var
|
||||
|
||||
echo after
|
||||
typeset -p ref var
|
||||
|
||||
# ref isn't exported, so none of the printenvs should print anything
|
||||
unset var ; unset -n ref
|
||||
typeset -n ref=var;
|
||||
typeset -p ref
|
||||
|
||||
var=foo; str=''
|
||||
printenv ref
|
||||
ref+=$str printenv ref
|
||||
ref+="$str" printenv ref
|
||||
ref=$ref$str printenv ref
|
||||
Reference in New Issue
Block a user