'\" 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 exit 1 "2011 年 7 月 12 日" "SunOS 5.11" "用户命令" .SH 名称 exit, return, goto \- shell 内置函数,可使 shell 在执行时跳过某些步骤序列 .SH 用法概要 .SS "sh" .LP .nf \fBexit\fR [\fIn\fR] .fi .LP .nf \fBreturn\fR [\fIn\fR] .fi .SS "csh" .LP .nf \fBexit\fR [( \fIexpr\fR )] .fi .LP .nf \fBgoto\fR \fIlabel\fR .fi .SS "ksh88" .LP .nf \fB*exit\fR [\fIn\fR] .fi .LP .nf \fB*return\fR [\fIn\fR] .fi .SS "ksh" .LP .nf \fB+exit\fR [\fIn\fR] .fi .LP .nf \fB+return\fR [\fIn\fR] .fi .SH 描述 .SS "sh" .sp .LP \fBexit\fR 可使调用方 shell 或 shell 脚本退出,退出状态由 \fIn\fR 指定。如果省略了 \fIn\fR,则退出状态为最后执行的命令的退出状态(\fBEOF\fR 也会导致 shell 退出)。 .sp .LP \fBreturn\fR 会使函数退出,返回值由 \fIn\fR 指定。如果省略 \fIn\fR,则返回状态为最后执行的命令的返回状态。 .SS "csh" .sp .LP \fBexit\fR 会使调用方 shell 或 shell 脚本退出,退出时使用状态变量的值或由表达式 \fBexpr\fR 指定的值。 .sp .LP \fBgoto\fR 内置命令使用指定的 \fIlabel\fR 作为命令中的搜索字符串。Shell 将尽可能多地反复检查其输入并搜索 \fIlabel\fR\fB:\fR 形式的行(前面可能有空格或制表符)。然后 shell 执行指定行之后的内容。跳转到位于 \fBwhile\fR 或 \fBfor\fR 内置命令与其对应的 \fBend\fR 之间的标签是错误做法。 .SS "ksh88" .sp .LP \fBexit\fR 可使调用方 shell 或 shell 脚本退出,退出状态由 \fIn\fR 指定。该值是指定状态的最低有效 8 位。如果省略 \fIn\fR,则退出状态为最后执行的命令的退出状态。执行陷阱时发生 \fBexit\fR 时,最后一个命令指的是在调用该陷阱之前执行的命令。此外,也可通过文件结尾使 shell 退出,但启用了 \fBignoreeof\fR 选项(请参见以下 \fBset\fR)的 shell 除外。 .sp .LP \fBreturn\fR 会使 shell 函数或 \fB\&'.'\fR 脚本返回到调用脚本,其返回状态由 \fIn\fR 指定。该值是指定状态的最低有效 8 位。如果省略 \fIn\fR,则返回状态为最后执行的命令的返回状态。如果不在函数或 \fB\&'.'\fR 脚本中时调用了 \fBreturn\fR,则该命令与 \fBexit\fR 相同。 .sp .LP 本手册页中,前面带有一个或两个 \fB*\fR(星号)的 \fBksh88\fR(1) 命令会通过以下方式进行特殊处理: .RS +4 .TP 1. 命令完成时,该命令前面的变量赋值列表仍然有效。 .RE .RS +4 .TP 2. 在变量赋值后进行 \fBI/O\fR 重定向。 .RE .RS +4 .TP 3. 脚本中包含的错误会导致其中止。 .RE .RS +4 .TP 4. 如果字的后面是前面加有 \fB**\fR 的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这表示在 \fB=\fR 符号之后执行波浪号替换,并且不执行字拆分和文件名生成。 .RE .SS "ksh" .sp .LP \fBexit\fR 是一个 shell 特殊内置命令,可使调用该命令的 shell 退出。在退出 shell 之前,如果已设置 \fBEXIT\fR 陷阱,则会调用该陷阱。 .sp .LP 如果已指定 \fIn\fR,则会用于设置退出状态。 .sp .LP \fBreturn\fR 是一个 shell 特殊内置命令,可使调用该命令的函数或点脚本退出。如果在 \fBfunction\fR 或点脚本之外调用 \fBreturn\fR,则等效于调用 \fBexit\fR。 .sp .LP 如果在通过 \fBfunction\fR 保留字语法定义的函数内调用 \fBreturn\fR,则在该函数返回之前,会在调用者的上下文中调用在该函数内设置的所有 \fBEXIT\fR 陷阱。 .sp .LP 如果已指定 \fIn\fR,则会用于设置退出状态。 .sp .LP 本手册页中,前面带有一个或两个 \fB+\fR 符号的 \fBksh\fR 命令是特殊的内置命令,将通过以下方式进行特殊处理: .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 如果为 \fBexit\fR 指定 \fIn\fR,则退出状态为 \fIn\fR 的最低有效八位值。否则,退出状态为前面命令的退出状态。在陷阱内调用时,前面的命令是指调用该陷阱的命令。 .sp .LP 如果为 \fBreturn\fR 指定 \fIn\fR,则退出状态为 \fIn\fR 的最低有效八位值。否则,退出状态为前面命令的退出状态。 .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 \fBbreak\fR(1)、\fBcsh\fR(1)、\fBksh\fR(1)、\fBksh88\fR(1)、\fBsh\fR(1)、\fBattributes\fR(5)