readonly [name]...
**readonly [name [= value]]...
**readonly -p
++readonly [-p] [name [= value]]...
给定 name 标记为 readonly,而且后续赋值可能无法更改这些 name 的值。如果未给定参数,则会输出所有 readonly 名称的列表。
将给定的 name 标记为 readonly,且不能通过后续赋值更改这些名称。
指定了 –p 时,readonly 按以下格式将所有只读变量的名称和值写入到标准输出中:
"readonly %s=%s\n", name, value
如果 name 已设置并且:
"readonly $s\n", name
如果 name 未设置。
shell 会设置输出的格式,包括适当使用引号,以便适合作为在 shell 执行环境中实现相同值和 readonly 属性设置结果的命令重新输入 shell,其中:
具备输出时设置的值的变量未设置 readonly 属性。
在输出时取消设置的变量在将保存的输出重新输入 shell 时不具备任何值。
在本手册页上,前面带有一个或两个 **(星号)的 ksh88(1) 命令会按照以下方式受到特殊处理:
命令完成时,该命令前面的变量赋值列表仍然有效。
在变量赋值之后处理 I/O 重定向。
脚本中包含的错误会导致其中止。
如果字的后面是前面加有 ** 的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这表示在 = 符号之后执行波浪号替换,并且不执行字拆分和文件名生成。
readonly 会为名称指定的每个变量设置 readonly 属性,防止变量值遭到更改。如果指定了 =value,变量名称会在为变量设置 readonly 之前设置为 value。
如果未指定名称,则所有 readonly 变量的名称和值都会写入标准输出。
readonly 作为声明命令内置在 shell 中,因此不会对参数执行字段分隔和路径名扩展操作。值会发生波浪号扩展。
使得输出为 readonly 命令形式,而该命令可作为 shell 的输入来重新创建当前的 readonly 变量集。
在本手册页上,前面带有一个或两个 + 符号的 ksh(1) 命令会按照以下方式受到特殊处理:
命令完成时,该命令前面的变量赋值列表仍然有效。
在变量赋值之后处理 I/O 重定向。
脚本中包含的错误会导致其中止。
它们不是有效的函数名称。
如果字的后面是前面加有 ++ 的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这意味着将在 = 符号之后执行波浪号替换,并且不执行字段分割和文件名生成。
将返回以下退出值:
成功完成。
出现错误。
有关下列属性的说明,请参见 attributes(5):
|