3

昨天我发现 Bash 提供了一种将变量标记为只读的方法,使用 readonly 关键字:

readonly hello="hello"
hello="world" # error message, Bash refuses to reassign the variable

这似乎是一个不错的功能,但我从未在任何 Bash 脚本中看到过此功能。有什么理由不广泛使用它吗?它实际上是便携式的吗?

4

2 回答 2

4

readonly对于一些由 bash 设置的变量很有用,例如$UID- 非只读值$LOGNAME,例如$USER用户可以轻松更改。

如果您觉得readonly有用,请使用它!没有多少人使用readonly,但不要让这困扰你。缺点 - 与其他变量属性一样,readonly属性不会与导出的变量一起传递,除非子进程是另一个 bash。

的一种用途readonly是将其应用于函数。这并没有广泛完成,但它解决了(错误地)具有两个同名函数的支持问题,这在使用存储在脚本之外的函数时可能是一个问题。

ksh 也支持readonly(作为别名)。

于 2012-06-11T07:48:27.703 回答
-2

'readonly' 变量的值不能进一步修改。它就像java中的'final'变量一样简单。

于 2019-10-10T09:37:31.263 回答