]> git.ipfire.org Git - thirdparty/bash.git/blame - tests/varenv10.sub
Bash-5.2-rc4 release
[thirdparty/bash.git] / tests / varenv10.sub
CommitLineData
8868edaf
CR
1# This program is free software: you can redistribute it and/or modify
2# it under the terms of the GNU General Public License as published by
3# the Free Software Foundation, either version 3 of the License, or
4# (at your option) any later version.
5#
6# This program is distributed in the hope that it will be useful,
7# but WITHOUT ANY WARRANTY; without even the implied warranty of
8# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9# GNU General Public License for more details.
10#
11# You should have received a copy of the GNU General Public License
12# along with this program. If not, see <http://www.gnu.org/licenses/>.
13#
d233b485
CR
14#
15# various tests of unset when applied to variables at different local scopes
8868edaf 16#
d233b485
CR
17# function unsetting variable at previous local scope, uncovering global
18
19inner()
20{
21 unset res
22 echo ${FUNCNAME}: ${res-res unset}
23 if [[ $1 == "set" ]]; then
24 res[0]="X"
25 res[1]="Y"
26 fi
27}
28
29outer()
30{
31 local res=
32 inner "$1"
33 echo ${FUNCNAME}: "res: ${res[@]}"
34}
35
36echo main: ${res-unset}
37outer set
38echo main: after first call: ${res-unset}
39outer dontset
40echo main: after second call: ${res-unset}
41
42unset -f outer inner
43unset res
44
45# local scope, unset variable at the same scope as local declaration
46func()
47{
48 typeset x=4
49
50 unset x
51 echo ${FUNCNAME}: ${x:-null or unset}
52}
53
54x=outside
55func
56echo after func: x = $x
57
58unset -f func
59unset x