这个问题与其他人很接近 -我可以从使用 $(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 中获取退出代码。