如何在bash中创建一个本地只读变量?
How to create a local read-only variable in bash?
如何在 bash 中同时创建 local
和 declare -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.x,local
也可以接受与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 declare
和 local
.
支持的所有选项
如何在 bash 中同时创建 local
和 declare -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.x,local
也可以接受与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 declare
和 local
.