Current File : //usr/man/zh_CN.UTF-8/man1/readonly.1
'\" te
.\" Copyright (c) 2007, 2011, Oracle and/or its affiliates.All rights reserved.
.\" Copyright 1989 AT&T
.\" Portions Copyright (c) 1982-2007 AT&T Knowledge Ventures
.TH readonly 1 "2011 年 7 月 12 日" "SunOS 5.11" "用户命令"
.SH 名称
readonly \- shell 内置函数,用于保护给定变量的值不被重新赋值
.SH 用法概要
.SS "sh"
.LP
.nf
\fBreadonly\fR [\fIname\fR]...
.fi

.SS "ksh88"
.LP
.nf
\fB**readonly\fR [\fIname\fR [= \fIvalue\fR]]...
.fi

.LP
.nf
\fB**readonly\fR \fB-p\fR
.fi

.SS "ksh"
.LP
.nf
\fB++readonly\fR [\fB-p\fR] [\fIname\fR [= \fIvalue\fR]]...
.fi

.SH 描述
.SS "sh"
.sp
.LP
给定 \fIname\fR 标记为 \fBreadonly\fR,而且后续赋值可能无法更改这些 \fIname\fR 的值。如果未给定参数,则会输出所有 \fBreadonly\fR 名称的列表。
.SS "ksh88"
.sp
.LP
将给定的 \fIname\fR 标记为 \fBreadonly\fR,且不能通过后续赋值更改这些名称。
.sp
.LP
指定了 \fB-p\fR 时,\fBreadonly\fR 按以下格式将所有只读变量的名称和值写入到标准输出中:
.sp
.in +2
.nf
"readonly %s=%s\en", \fIname\fR, \fIvalue\fR
.fi
.in -2
.sp

.sp
.LP
如果 \fIname\fR 已设置并且:
.sp
.in +2
.nf
"readonly $s\en", \fIname\fR
.fi
.in -2
.sp

.sp
.LP
如果 \fIname\fR 未设置。
.sp
.LP
shell 会设置输出的格式,包括适当使用引号,以便适合作为在 shell 执行环境中实现相同值和 \fBreadonly\fR 属性设置结果的命令重新输入 shell,其中:
.RS +4
.TP
1.
具备输出时设置的值的变量未设置 \fBreadonly\fR 属性。
.RE
.RS +4
.TP
2.
在输出时取消设置的变量在将保存的输出重新输入 shell 时不具备任何值。
.RE
.sp
.LP
在本手册页上,前面带有一个或两个 \fB**\fR(星号)的 \fBksh88\fR(1) 命令会按照以下方式受到特殊处理:
.RS +4
.TP
1.
命令完成时,该命令前面的变量赋值列表仍然有效。
.RE
.RS +4
.TP
2.
在变量赋值之后处理 I/O 重定向。
.RE
.RS +4
.TP
3.
脚本中包含的错误会导致其中止。
.RE
.RS +4
.TP
4.
如果字的后面是前面加有 \fB**\fR 的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这表示在 \fB=\fR 符号之后执行波浪号替换,并且不执行字拆分和文件名生成。
.RE
.SS "ksh"
.sp
.LP
\fBreadonly\fR 会为名称指定的每个变量设置 \fBreadonly\fR 属性,防止变量值遭到更改。如果指定了 \fB=\fR\fIvalue\fR,变量名称会在为变量设置 \fBreadonly\fR 之前设置为 \fIvalue\fR。 
.sp
.LP
如果未指定名称,则所有 \fBreadonly\fR 变量的名称和值都会写入标准输出。 
.sp
.LP
\fBreadonly\fR 作为声明命令内置在 shell 中,因此不会对参数执行字段分隔和路径名扩展操作。值会进行波浪号扩展。
.sp
.ne 2
.mk
.na
\fB\fB-p\fR\fR
.ad
.RS 6n
.rt  
使得输出为 \fBreadonly\fR 命令形式,而该命令可作为 shell 的输入来重新创建当前的 \fBreadonly\fR 变量集。
.RE

.sp
.LP
在本手册页上,前面带有一个或两个 \fB+\fR 符号的 \fBksh\fR(1) 命令会按照以下方式受到特殊处理:
.RS +4
.TP
1.
命令完成时,该命令前面的变量赋值列表仍然有效。
.RE
.RS +4
.TP
2.
在变量赋值之后处理 I/O 重定向。
.RE
.RS +4
.TP
3.
脚本中包含的错误会导致其中止。
.RE
.RS +4
.TP
4.
它们不是有效的函数名称。
.RE
.RS +4
.TP
5.
如果字的后面是前面加有 \fB++\fR 的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这意味着将在 \fB=\fR 符号之后执行波浪号替换,并且不执行字段分割和文件名生成。
.RE
.SH 退出状态
.SS "ksh"
.sp
.LP
将返回以下退出值:
.sp
.ne 2
.mk
.na
\fB\fB0\fR\fR
.ad
.RS 6n
.rt  
成功完成。
.RE

.sp
.ne 2
.mk
.na
\fB\fB>0\fR\fR
.ad
.RS 6n
.rt  
出现错误。
.RE

.SH 属性
.sp
.LP
有关下列属性的说明,请参见 \fBattributes\fR(5):
.sp

.sp
.TS
tab() box;
cw(2.75i) |cw(2.75i) 
lw(2.75i) |lw(2.75i) 
.
属性类型属性值
_
可用性system/core-os
.TE

.SH 另请参见
.sp
.LP
\fBksh\fR(1)、\fBksh88\fR(1)、\fBsh\fR(1)、\fBtypeset\fR(1)、\fBattributes\fR(5)