Bash:如何使用“&”在后台运行脚本并使用“||”失败时运行其他东西?

Bash:如何使用“&”在后台运行脚本并使用“||”失败时运行其他东西?

我试图让命令在后台运行,但也使用“||”如果第一个命令失败则执行不同的命令。例子:

$( <run-this-in-background> & || <run-this-if-failed>)

然而我收到语法错误:

command substitution: line 15: syntax error near unexpected token `||'

这是确切的行:

$(./temptwo.sh & || rc=$?)

我的完整代码如下...我知道rc=$?当我可以在下一行中执行此操作时,这看起来有点奇怪,但是我们正在使用一个记录器,如果任何行以 $? 退出,它将退出您的程序。 != 0,所以我们解决这个问题的方法是使用“./someCommand || rc=$?”它将以“0”退出,但也会给我们返回代码。

#default success code: 
rc=0 
#run temptwo.sh in the background. If it fails, set rc=$?
$(./temptwo.sh & || rc=$? )
#Trying to get the process id of "temptwo.sh" below (not sure if works)
pid=$! 
#Wait until the process finishes
wait $pid 

答案1

/temptwo.sh & pid=$! ; wait $pid || rc=$?

不过,恕我直言,这没有多大意义。

/temptwo.sh & pid=$! ; wait $pid ; rc=$?
if [ "$rc" -gt 0 ]; then
...

相关内容