我将以下内容定义为只读:
readonly root_command='sudo -s'
后来在我的脚本中使用,如下所示:
exec $root_command
我的问题是,也许我是慢的或其他什么,但我不完全理解POSIX 手册页,例如我是否可以单引号或必须双引号以及类似的-p
选项的用途是什么?
谢谢。
答案1
根据 POSIX,readonly
有两种形式:
readonly var
,它将 shell 变量标记var
为只读,并且可以选择var
同时为 (readonly var=value
) 赋值。readonly -p
,它输出所有只读变量的名称和值。
它们永远不会结合在一起;您可以用来-p
查看所有当前的只读变量,或者用来readonly
将变量标记为只读(不带-p
)。
当您将变量标记为只读时,您还可以给它一个值(这将是它的永久值,因为它之后无法更改)。这与任何变量赋值相同,并且由于它采用形式var=value
,其中value
是一个单词,因此您需要根据需要使用与通常相同的规则(单引号以防止变量扩展,双引号以允许变量扩展等)进行适当的引用。 )。
请注意,这exec $root_command
取决于 的当前值$IFS
,并且最好使用函数而不是变量来存储命令。