如何在bash中创建一个本地只读变量?

How to create a local read-only variable in bash?

如何在 bash 中同时创建 localdeclare -r(只读)变量?

如果我这样做:

function x {
    declare -r var=val
}

然后我简单地得到一个只读的全局var

如果我这样做:

function x {
    local var=val
}

如果我这样做:

function x {
    local var=val
    declare -r var
}

然后我又得到一个全局(我可以从其他函数访问 var)。

如何在 bash 中结合本地和只读?

即使help local在Bash中没有提及3.xlocal也可以接受与declare(至少从 Bash 4.3.30 开始,此文档疏忽已得到纠正)。

因此,你可以简单地做:

local -r var=val

也就是说,declare 在函数内部 默认情况下与 local 的行为相同,正如 @ruakh 在评论中指出的那样,所以你的第一次尝试也应该已经成功地创建了一个 local 只读变量。

在 Bash 4.2 和更高版本中,您可以 覆盖 使用 declare-g 选项来创建全局变量,甚至从在函数内部(Bash 3.x 支持这个。)


谢谢,Taylor Edmiston:

help declare 显示 both declarelocal.

支持的所有选项