我应该使用只读标志吗?

时间:2012-06-11 05:38:21

标签: bash

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

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

这似乎是一个很好的功能,但是,我从未在任何Bash脚本中看到过这种功能。有没有理由不使用这种扩展?它实际上是便携式吗?

2 个答案:

答案 0 :(得分:4)

readonly对于由bash设置的某些变量非常有用,例如$UID - 非{1}}和$LOGNAME等非读取值很容易让用户改变。

如果您发现$USER有用,请使用它!没有多少人使用readonly,但不要让那些打扰你。下行 - 与其他变量属性一样,readonly属性不会与导出变量一起传递,除非子进程是另一个bash。

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

ksh也支持{{ 1}}(作为别名)。

答案 1 :(得分:0)

'readonly'变量的值无法进一步修改。它就像Java中的“最终”变量一样简单。