在bash中,如何在使用本地时检索子shell的退出代码

在bash中,如何在使用本地时检索子shell的退出代码

这个问题与其他人很接近 -我可以从使用 $(command) 启动的子 shell 中获取退出代码吗?

然而,我发现没有任何解决方案允许我在使用 local 和 eval 时从子 shell 获取退出代码,如本例所示......

test() {
> local WHY="$(eval "echo 'test'"; exit 3)"; echo $?
> }
test
0

答案1

这很简单:不要使用单个命令而是拆分:

test() {
    local why
    why="$(eval "echo 'test'"; exit 3)"; echo $?
}
test
3

问题是这local是一个带有自己的退出代码的内置命令...如果您在变量赋值的同时避免该命令,您将从子 shell 中获取退出代码。

相关内容