昨天我发现Bash提供了一种使用readonly关键字将变量标记为只读的方法:
readonly hello="hello"
hello="world" # error message, Bash refuses to reassign the variable
这似乎是一个很好的功能,但是,我从未在任何Bash脚本中看到过这种功能。有没有理由不使用这种扩展?它实际上是便携式吗?
答案 0 :(得分:4)
readonly
对于由bash设置的某些变量非常有用,例如$UID
- 非{1}}和$LOGNAME
等非读取值很容易让用户改变。
如果您发现$USER
有用,请使用它!没有多少人使用readonly
,但不要让那些打扰你。下行 - 与其他变量属性一样,readonly
属性不会与导出变量一起传递,除非子进程是另一个bash。
readonly
的一个用途是应用它一个功能。这并没有广泛完成,但是它解决了(错误地)具有两个相同名称的函数的支持问题,这在使用存储在脚本之外的函数时可能是个问题。
ksh也支持{{ 1}}(作为别名)。
答案 1 :(得分:0)
'readonly'变量的值无法进一步修改。它就像Java中的“最终”变量一样简单。