【问题标题】:How to create a local read-only variable in bash?如何在 bash 中创建本地只读变量?
【发布时间】:2015-12-01 02:23:37
【问题描述】:

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

【问题讨论】:

  • declare 被记录为声明一个局部变量,除非您通过设置 -g 标志明确请求一个全局变量。我刚刚在我自己的系统上进行了测试,它的行为与记录的一样。你能解释一下为什么你认为情况并非如此吗?

标签: bash variables local readonly


【解决方案1】:

即使help local 没有在 Bash 3.x 中提及它,local 也可以接受与 declare 相同的选项(至少从 Bash 4.3.30 开始,本文档疏忽已得到纠正)。

因此,您可以简单地这样做:

local -r var=val

也就是说,declare 在函数内 默认行为与local 相同,正如@ruakh 在评论中所述,因此您的第一次尝试也应该成功地创建了一个 本地只读变量。

在 Bash 4.2 及更高版本中,您可以使用declare-g 选项覆盖此选项,即使在函数内部也可以创建全局变量(Bash 3.x 没有 支持这个。)


谢谢,Taylor Edmiston:

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

【讨论】:

    猜你喜欢
    • 2016-01-11
    • 2014-04-14
    • 2013-06-28
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多