小编mad*_*uri的帖子

Shell 函数中局部变量的作用域

阅读24.2 后。局部变量,我认为var用关键字声明一个变量local意味着它var的值只能在由函数大括号分隔的代码块内访问。

但是,在运行以下示例后,我发现var也可以从该代码块调用的函数中访问、读取和写入 - 即即使var声明localouterFuncinnerFunc仍然能够读取它并更改其值。

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}]"
Run Code Online (Sandbox Code Playgroud)

输出:

global:    before outerFunc: [var:]               # as expected, `var` is not accessible outside of …
Run Code Online (Sandbox Code Playgroud)

shell bash shell-script function variable

47
推荐指数
3
解决办法
6万
查看次数

标签 统计

bash ×1

function ×1

shell ×1

shell-script ×1

variable ×1