昨天我发现 Bash 提供了一种将变量标记为只读的方法,使用 readonly 关键字:
readonly hello="hello"
hello="world" # error message, Bash refuses to reassign the variable
这似乎是一个不错的功能,但我从未在任何 Bash 脚本中看到过此功能。有什么理由不广泛使用它吗?它实际上是便携式的吗?
昨天我发现 Bash 提供了一种将变量标记为只读的方法,使用 readonly 关键字:
readonly hello="hello"
hello="world" # error message, Bash refuses to reassign the variable
这似乎是一个不错的功能,但我从未在任何 Bash 脚本中看到过此功能。有什么理由不广泛使用它吗?它实际上是便携式的吗?
readonly
对于一些由 bash 设置的变量很有用,例如$UID
- 非只读值$LOGNAME
,例如$USER
用户可以轻松更改。
如果您觉得readonly
有用,请使用它!没有多少人使用readonly
,但不要让这困扰你。缺点 - 与其他变量属性一样,readonly
属性不会与导出的变量一起传递,除非子进程是另一个 bash。
的一种用途readonly
是将其应用于函数。这并没有广泛完成,但它解决了(错误地)具有两个同名函数的支持问题,这在使用存储在脚本之外的函数时可能是一个问题。
ksh 也支持readonly
(作为别名)。
'readonly' 变量的值不能进一步修改。它就像java中的'final'变量一样简单。