Bash 我应该使用只读标志吗?

Bash 我应该使用只读标志吗?,bash,Bash,昨天我发现Bash提供了一种方法,可以使用readonly关键字将变量标记为只读: readonly hello="hello" hello="world" # error message, Bash refuses to reassign the variable 这似乎是一个很好的特性,但是,我从未见过在任何Bash脚本中使用它。有什么理由不广泛使用这个吗?它实际上是可移植的吗?readonly对于bash设置的一些变量很有用,例如$UID-非只读值,如$LOGNAME和$USER很容易被

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

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

这似乎是一个很好的特性,但是,我从未见过在任何Bash脚本中使用它。有什么理由不广泛使用这个吗?它实际上是可移植的吗?

readonly
对于bash设置的一些变量很有用,例如
$UID
-非只读值,如
$LOGNAME
$USER
很容易被用户更改。

如果您发现
readonly
很有用,请使用它!没有多少人使用“只读”,但请不要因此而烦恼。缺点-与其他变量属性一样,
readonly
属性不会与导出的变量一起传递,除非子进程是另一个bash。

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

ksh还支持
只读
(作为别名)。

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

OP并没有问它是做什么的,但问使用它是否明智。