手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

readonly(1)

名称

readonly - shell 内置函数,用于保护给定变量的值不被重新赋值

用法概要

sh

readonly [name]...

ksh88

**readonly [name [= value]]...
**readonly -p

ksh

++readonly [-p] [name [= value]]...

描述

sh

给定 name 标记为 readonly,而且后续赋值可能无法更改这些 name 的值。如果未给定参数,则会输出所有 readonly 名称的列表。

ksh88

将给定的 name 标记为 readonly,且不能通过后续赋值更改这些名称。

指定了 –p 时,readonly 按以下格式将所有只读变量的名称和值写入到标准输出中:

"readonly %s=%s\n", name, value

如果 name 已设置并且:

"readonly $s\n", name

如果 name 未设置。

shell 会设置输出的格式,包括适当使用引号,以便适合作为在 shell 执行环境中实现相同值和 readonly 属性设置结果的命令重新输入 shell,其中:

  1. 具备输出时设置的值的变量未设置 readonly 属性。

  2. 在输出时取消设置的变量在将保存的输出重新输入 shell 时不具备任何值。

在本手册页上,前面带有一个或两个 **(星号)的 ksh88(1) 命令会按照以下方式受到特殊处理:

  1. 命令完成时,该命令前面的变量赋值列表仍然有效。

  2. 在变量赋值之后处理 I/O 重定向。

  3. 脚本中包含的错误会导致其中止。

  4. 如果字的后面是前面加有 ** 的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这表示在 = 符号之后执行波浪号替换,并且不执行字拆分和文件名生成。

ksh

readonly 会为名称指定的每个变量设置 readonly 属性,防止变量值遭到更改。如果指定了 =value,变量名称会在为变量设置 readonly 之前设置为 value

如果未指定名称,则所有 readonly 变量的名称和值都会写入标准输出。

readonly 作为声明命令内置在 shell 中,因此不会对参数执行字段分隔和路径名扩展操作。值会发生波浪号扩展。

–p

使得输出为 readonly 命令形式,而该命令可作为 shell 的输入来重新创建当前的 readonly 变量集。

在本手册页上,前面带有一个或两个 + 符号的 ksh(1) 命令会按照以下方式受到特殊处理:

  1. 命令完成时,该命令前面的变量赋值列表仍然有效。

  2. 在变量赋值之后处理 I/O 重定向。

  3. 脚本中包含的错误会导致其中止。

  4. 它们不是有效的函数名称。

  5. 如果字的后面是前面加有 ++ 的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这意味着将在 = 符号之后执行波浪号替换,并且不执行字段分割和文件名生成。

退出状态

ksh

将返回以下退出值:

0

成功完成。

>0

出现错误。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os

另请参见

ksh(1)ksh88(1)sh(1)typeset(1)attributes(5)