源 shell 脚本的退出代码

Posted

技术标签:

【中文标题】源 shell 脚本的退出代码【英文标题】:Exit code of a sourced shell script 【发布时间】:2013-01-26 04:54:24 【问题描述】:

Shell 脚本可以被获取,即在当前的 shell 中执行,比如

. ~/some_script.sh

但它们也可以通过子shell调用,例如

/bin/bash ~/another_script.sh

编写一个脚本时,我将其方案从采购更改为子shell,然后再返回采购。有些事情让写作变得不同。现在我被退出状态困住了,因为我不确定——return 状态会干扰exit 产生的那些状态吗?因为tldp 上写了一些状态是保留的,但是所有的例子都是关于exit 指令的。那么这些限制是否也与返回码有关?

我在 ABS 指南中找到的所有有用之处是 'A return 命令可选地接受一个整数参数,该参数作为函数的“退出状态”返回给调用脚本,并分配此退出状态到变量 $?.',但我对 'as' 有疑问,并在“退出状态”周围加上引号。

【问题讨论】:

【参考方案1】:

returnexit 返回的代码是相同的,关键字只是在不同的上下文中使用(return 用于从函数和采购返回,exit 用于退出当前 shell)。

它们本身不会相互干扰,但不带参数的exitreturn 将使用前一个命令的返回值,该值可能已在另一个exitreturn 中指定声明。

【讨论】:

你需要什么样的例子? 第一篇文章中有 tldp.org 的链接。

以上是关于源 shell 脚本的退出代码的主要内容,如果未能解决你的问题,请参考以下文章

在 C 程序中获取 shell 脚本的退出代码

运行 python 脚本运行 shell 文件时退出代码 191

如果任何命令失败,则在最后以非零代码退出 shell 脚本

如何在 shell 脚本中捕获 Gradle 退出代码?

如何在linux中使用shell脚本杀死进程时获取退出代码=0

在 Unix shell 脚本中设置退出代码