如何在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在注释中所述,因此您的第一次尝试也应该成功创建了一个本地只读变量。
在Bash 4.2及更高版本中,您可以使用declare
的-g
选项覆盖它,甚至可以从函数内部创建一个全局变量(Bash 3.x不支持此功能。)
谢谢,Taylor Edmiston:
help declare
显示declare
和local
的所有选项支持。