阅读24.2 后。局部变量,我认为var
用关键字声明一个变量local
意味着它var
的值只能在由函数大括号分隔的代码块内访问。
但是,在运行以下示例后,我发现var
也可以从该代码块调用的函数中访问、读取和写入 - 即即使var
声明local
为outerFunc
,innerFunc
仍然能够读取它并更改其值。
#!/usr/bin/env bash
function innerFunc() {
var='new value'
echo "innerFunc: [var:${var}]"
}
function outerFunc() {
local var='initial value'
echo "outerFunc: before innerFunc: [var:${var}]"
innerFunc
echo "outerFunc: after innerFunc: [var:${var}]"
}
echo "global: before outerFunc: [var:${var}]"
outerFunc
echo "global: after outerFunc: [var:${var}]"
Run Code Online (Sandbox Code Playgroud)
输出:
global: before outerFunc: [var:] # as expected, `var` is not accessible outside of …
Run Code Online (Sandbox Code Playgroud)