有没有用于将变量声明为只读而没有值?

时间:2017-11-02 22:18:08

标签: bash

此bash语句declare -r myvarmyvar声明为只读,没有设置值。 有没有用于将变量声明为只读而没有值?

2 个答案:

答案 0 :(得分:2)

首先,如果变量最初未设置,则可以防止它具有稍后设置的值(即使是空值!)(因此在当前bash 4.x中 - 与此类只读的旧版本形成对比变量被认为具有分配的空字符串值)将未设置的状态建立为shell实例的生命周期的不变量。

其次,有理由使用最初未设置 的值:使用declare设置变量的标志会修改{{1} }。这并不总是令人满意的。考虑:

$?

即使declare -r result="$(my-command)" || exit 失败,该命令的退出状态为my-command,因为0成功,因此永远不会运行declare。相比之下:

exit

...如果result=$(my-command) || exit declare -r result 失败,则会正常退出。

答案 1 :(得分:-2)

设置为readonly但没有值的变量可以用作标记,表示发生了某些事情。

这样的变量将通过bash测试

[ -n myvar ] && echo ok

例如,如果您想要一种方法来检查shell脚本中的条件,然后再检查该条件是否为真,而不必重新执行它,则应检查一次并将其设置为只读标志。