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

问题描述 投票:14回答:1

如何在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中结合本地和只读?

bash variables local readonly
1个回答
25
投票

即使help local没有在Bash 3.x中提及它,local也可以接受与declare相同的选项(截至至少Bash 4.3.30,此文档疏忽已被更正)。

因此,你可以简单地做:

local -r var=val

也就是说,默认情况下,函数内部的declarelocal的行为相同,正如@ruakh在注释中所述,因此您的第一次尝试也应该成功创建了一个本地只读变量。

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


谢谢,Taylor Edmiston

help declare显示declarelocal的所有选项支持。

© www.soinside.com 2019 - 2024. All rights reserved.