Shell函数中局部变量的范围
看完24.2。局部变量,我认为var使用关键字声明变量local意味着var仅在函数的花括号分隔的代码块中可以访问的值。 但是,在运行以下示例之后,我发现var也可以从该代码块调用的函数中进行访问,读取和写入-即,即使var被声明local为outerFunc,innerFunc也仍然可以读取和更改其值。 Run It Online #!/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}]" 输出: global: before outerFunc: [var:] …