小编典典

Bash函数中返回和退出的区别

all

关于退出代码,Bash 函数中的returnand语句有什么区别?exit


阅读 119

收藏
2022-03-13

共1个答案

小编典典

从; man bash_return [n]

使函数停止执行并将 n 指定的值返回给它的调用者。如果省略 n,则返回状态为函数体中最后执行的命令的状态。

…在exit [n]

导致 shell 以 n 状态退出。如果省略 n,则退出状态为最后执行的命令的状态。在 shell 终止之前执行 EXIT 上的陷阱。

编辑:

根据您对问题的编辑,关于退出代码,return与退出代码无关。退出代码用于 应用程序/脚本
,而不是函数。因此,在这方面,唯一设置脚本退出代码(调用程序可以使用$?shell 变量捕获的代码)的关键字是exit.

编辑2:

我最后提到exit的声明引起了一些评论。它是为了区分returnexit理解 OP,事实上,在程序/shell 脚本的 任何
给定点,exit是用退出代码结束脚本的唯一方法调用进程。

在 shell 中执行的每个命令都会产生一个本地“退出代码”:它将$?变量设置为该代码,并且可以与if,
&&和其他运算符一起使用以有条件地执行其他命令。

这些退出代码(和$?变量的值)在每次命令执行时都会重置。

顺便说一句,脚本执行的最后一个命令的退出代码用作调用进程所看到的脚本本身的退出代码。

最后,函数在被调用时作为退出代码的 shell 命令。函数的退出代码(函数 )使用return. 因此,当函数return 0运行时,函数执行终止,退出代码为 0。

2022-03-13