以下“readonly”使用 POSIX 正确吗?

以下“readonly”使用 POSIX 正确吗?

我将以下内容定义为只读:

readonly root_command='sudo -s'

后来在我的脚本中使用,如下所示:

exec $root_command

我的问题是,也许我是慢的或其他什么,但我不完全理解POSIX 手册页,例如我是否可以单引号或必须双引号以及类似的-p选项的用途是什么?

谢谢。

答案1

根据 POSIXreadonly有两种形式:

  1. readonly var,它将 shell 变量标记var为只读,并且可以选择var同时为 ( readonly var=value) 赋值。

  2. readonly -p,它输出所有只读变量的名称和值。

它们永远不会结合在一起;您可以用来-p查看所有当前的只读变量,或者用来readonly将变量标记为只读(不带-p)。

当您将变量标记为只读时,您还可以给它一个值(这将是它的永久值,因为它之后无法更改)。这与任何变量赋值相同,并且由于它采用形式var=value,其中value是一个单词,因此您需要根据需要使用与通常相同的规则(单引号以防止变量扩展,双引号以允许变量扩展等)进行适当的引用。 )。

请注意,这exec $root_command取决于 的当前值$IFS,并且最好使用函数而不是变量来存储命令。

相关内容