exit [n]
return [n]
exit [( expr )]
goto label
*exit [n]
*return [n]
+exit [n]
+return [n]
exit 可使调用方 shell 或 shell 脚本退出,退出状态由 n 指定。如果省略了 n,则退出状态为最后执行的命令的退出状态(EOF 也会导致 shell 退出)。
return 会使函数退出,返回值由 n 指定。如果省略 n,则返回状态为最后执行的命令的返回状态。
exit 会使调用方 shell 或 shell 脚本退出,退出时使用状态变量的值或由表达式 expr 指定的值。
goto 内置命令使用指定的 label 作为命令中的搜索字符串。Shell 将尽可能多地反复检查其输入并搜索 label: 形式的行(前面可能有空格或制表符)。然后 shell 执行指定行之后的内容。跳转到位于 while 或 for 内置命令与其对应的 end 之间的标签是错误做法。
exit 可使调用方 shell 或 shell 脚本退出,退出状态由 n 指定。该值是指定状态的最低有效 8 位。如果省略 n,则退出状态为最后执行的命令的退出状态。执行陷阱时发生 exit 时,最后一个命令指的是在调用该陷阱之前执行的命令。此外,也可通过文件结尾使 shell 退出,但启用了 ignoreeof 选项(请参见以下 set)的 shell 除外。
return 会使 shell 函数或 '.' 脚本返回到调用脚本,其返回状态由 n 指定。该值是指定状态的最低有效 8 位。如果省略 n,则返回状态为最后执行的命令的返回状态。如果不在函数或 '.' 脚本中时调用了 return,则该命令与 exit 相同。
本手册页中,前面带有一个或两个 *(星号)的 ksh88(1) 命令会通过以下方式进行特殊处理:
命令完成时,该命令前面的变量赋值列表仍然有效。
在变量赋值后进行 I/O 重定向。
脚本中包含的错误会导致其中止。
如果字的后面是前面加有 ** 的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这表示在 = 符号之后执行波浪号替换,并且不执行字拆分和文件名生成。
exit 是一个 shell 特殊内置命令,可使调用该命令的 shell 退出。在退出 shell 之前,如果已设置 EXIT 陷阱,则会调用该陷阱。
如果已指定 n,则会用于设置退出状态。
return 是一个 shell 特殊内置命令,可使调用该命令的函数或点脚本退出。如果在 function 或点脚本之外调用 return,则等效于调用 exit。
如果在通过 function 保留字语法定义的函数内调用 return,则在该函数返回之前,会在调用者的上下文中调用在该函数内设置的所有 EXIT 陷阱。
如果已指定 n,则会用于设置退出状态。
本手册页中,前面带有一个或两个 + 符号的 ksh 命令是特殊的内置命令,将通过以下方式进行特殊处理:
命令完成时,该命令前面的变量赋值列表仍然有效。
在变量赋值之后处理 I/O 重定向。
脚本中包含的错误会导致其中止。
它们不是有效的函数名称。
对于跟在前面添加了 ++ 的命令之后且格式为变量赋值格式的单词,将通过与变量赋值相同的规则进行扩展。这意味着将在 = 符号之后执行波浪号替换,并且不执行字段分割和文件名生成。
如果为 exit 指定 n,则退出状态为 n 的最低有效八位值。否则,退出状态为前面命令的退出状态。在陷阱内调用时,前面的命令是指调用该陷阱的命令。
如果为 return 指定 n,则退出状态为 n 的最低有效八位值。否则,退出状态为前面命令的退出状态。
有关下列属性的说明,请参见 attributes(5):
|