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