Linux

Bash:如何使用“&”在後台執行腳本並使用“||”在失敗時執行其他東西?

  • November 18, 2018

我試圖讓命令在後台執行,但也使用“||” 如果第一個命令失敗,則執行不同命令的語法。例子:

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

但是我收到語法錯誤

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

這是確切的行:

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

我的完整程式碼如下……我知道rc=$?當我可以在下一行中執行此操作時似乎有點奇怪,但是我們使用的記錄器將在任何行退出時退出您的程序 $ ? != 0, so the way we get around it is by using “./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 
/temptwo.sh & pid=$! ; wait $pid || rc=$?

不過,恕我直言,這沒有多大意義。

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

引用自:https://unix.stackexchange.com/questions/432424