手册页部分 1: 用户命令

退出打印视图

更新时间: 2014 年 7 月
 
 

exit(1)

名称

exit , return , goto - shell 内置函数,可使 shell 在执行时跳过某些步骤序列

用法概要

sh

exit [n]
return [n]

csh

exit [( expr )]
goto label

ksh88

*exit [n]
*return [n]

ksh

+exit [n]
+return [n]

描述

sh

exit 可使调用方 shell 或 shell 脚本退出,退出状态由 n 指定。如果省略了 n,则退出状态为最后执行的命令的退出状态(EOF 也会导致 shell 退出)。

return 会使函数退出,返回值由 n 指定。如果省略 n,则返回状态为最后执行的命令的返回状态。

csh

exit 会使调用方 shell 或 shell 脚本退出,退出时使用状态变量的值或由表达式 expr 指定的值。

goto 内置命令使用指定的 label 作为命令中的搜索字符串。Shell 将尽可能多地反复检查其输入并搜索 label: 形式的行(前面可能有空格或制表符)。然后 shell 执行指定行之后的内容。跳转到位于 whilefor 内置命令与其对应的 end 之间的标签是错误做法。

ksh88

exit 可使调用方 shell 或 shell 脚本退出,退出状态由 n 指定。该值是指定状态的最低有效 8 位。如果省略 n,则退出状态为最后执行的命令的退出状态。执行陷阱时发生 exit 时,最后一个命令指的是在调用该陷阱之前执行的命令。此外,也可通过文件结尾使 shell 退出,但启用了 ignoreeof 选项(请参见以下 set)的 shell 除外。

return 会使 shell 函数或 '.' 脚本返回到调用脚本,其返回状态由 n 指定。该值是指定状态的最低有效 8 位。如果省略 n,则返回状态为最后执行的命令的返回状态。如果不在函数或 '.' 脚本中时调用了 return,则该命令与 exit 相同。

本手册页中,前面带有一个或两个 *(星号)的 ksh88(1) 命令会通过以下方式进行特殊处理:

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

  2. 在变量赋值后进行 I/O 重定向。

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

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

ksh

exit 是一个 shell 特殊内置命令,可使调用该命令的 shell 退出。在退出 shell 之前,如果已设置 EXIT 陷阱,则会调用该陷阱。

如果已指定 n,则会用于设置退出状态。

return 是一个 shell 特殊内置命令,可使调用该命令的函数或点脚本退出。如果在 function 或点脚本之外调用 return,则等效于调用 exit

如果在通过 function 保留字语法定义的函数内调用 return,则在该函数返回之前,会在调用者的上下文中调用在该函数内设置的所有 EXIT 陷阱。

如果已指定 n,则会用于设置退出状态。

本手册页中,前面带有一个或两个 + 符号的 ksh 命令是特殊的内置命令,将通过以下方式进行特殊处理:

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

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

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

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

  5. 对于跟在前面添加了 ++ 的命令之后且格式为变量赋值格式的单词,将通过与变量赋值相同的规则进行扩展。这意味着将在 = 符号之后执行波浪号替换,并且不执行字段分割和文件名生成。

退出状态

ksh

如果为 exit 指定 n,则退出状态为 n 的最低有效八位值。否则,退出状态为前面命令的退出状态。在陷阱内调用时,前面的命令是指调用该陷阱的命令。

如果为 return 指定 n,则退出状态为 n 的最低有效八位值。否则,退出状态为前面命令的退出状态。

属性

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

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

另请参见

break(1)csh(1)ksh(1)ksh88(1)sh(1)attributes(5)