我必须在shell脚本中使用exec运行命令,我需要在出现错误时捕获退出代码并运行另一个命令,例如
TARGET = $$qtLibraryTarget(NLPro)
我理解exec替换了当前的shell并继续,我的问题是如果exec不成功,我需要运行另一个命令。
答案 0 :(得分:0)
如果尝试运行该过程时出现一些立即错误,则代码可以正常运行:
$ echo 1
1
$ echo $?
0
$ exec asd123
-bash: exec: asd123: not found
$ echo $?
127
如果找到并且启动了可执行文件,那么它将不会返回,因为它将超过整个脚本并且永远不会再次返回bash。
例如,这永远不会返回:
$ exec grep asd /dev/null
(grep的退出代码是1,但父shell被超越,所以没有人可以检查)
如果要在这种情况下从进程中获取退出代码,则必须将其作为子进程启动,即不使用exec(仅command_that_will_fail
)。在这种情况下,bash进程将充当一个主管,它等待子进程完成并可以检查退出代码。