【发布时间】:2020-05-16 17:33:59
【问题描述】:
我有两个 shell 脚本:
test.sh
function func() {
echo $1
exit 1
}
运行.sh
source ./test.sh
func "Hello"
exitCode=$?
echo "Output: ${exitCode}"
结果:
Hello
我目前面临的问题是,当函数 func 返回 1 时,我的 run.sh 脚本会中断,之后不会执行任何操作。那么,有什么方法可以在不破坏 run.sh 的情况下有效地捕获退出代码。我知道有办法使用( func "Hello" ) 调用子shell,但我想在不使用flock 调用子shell 的情况下做到这一点。我查找了参考示例,但找不到任何接近它的示例。
【问题讨论】:
-
exit表示exit。执行该命令后,该进程将被终止并返回任何指定的退出值。 Yo如果您输入run.sh ; echo "rc=$?,您应该会看到您的1值回显。下面听起来是个好主意。祝你好运。 -
exit用在scripts,而return用在functions这就是你想做的吗? -
我知道,但是由于我没有权限使用方法更改脚本,所以我必须在自己的脚本中进行错误处理。
-
为什么子shell必须使用'flock'?