此bash语句declare -r myvar
将myvar
声明为只读,没有设置值。
有没有用于将变量声明为只读而没有值?
答案 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脚本中的条件,然后再检查该条件是否为真,而不必重新执行它,则应检查一次并将其设置为只读标志。