我需要在後台運行一個進程,然後退出當前終端。
以下命令會導致錯誤:
> google-chrome-stable &! && exit
zsh: parse error near '&&'
我考慮過簡單地呼叫“google-chrome-stable &!”並透過 if 語句檢查錯誤代碼,但希望找到一種更簡單的方法來完成此操作。
答案1
&!
和&&
兩個單獨的命令,所以你不能將兩者結合起來,所以
google-chrome-stable &! exit
可能就是你所追求的。
在後台命令退出之前,您無法取得退出代碼...
答案2
從啟動後台作業返回到呼叫 shell 的退出狀態是總是零:
% bogus &
[1] 66712
% zsh: command not found: bogus
[1] + exit 127 bogus
% echo $?
0
... 和&!
都是&&
指令終止符。這意味著你的命令可能應該寫成
google-chrome-stable &! exit
或作為等價物
google-chrome-stable &!
exit
wait
您只能透過使用作業的作業 ID(因為您否認了它,所以沒有)或進程 ID(但您不能,因為您否認了該進程,因此無法取得後台作業的真實退出狀態)
如果你沒有否認這份工作,也許透過
google-chrome-stable & chrome_pid=$!
那麼該指令wait $chrome_pid
最終會以後台作業的退出狀態退出,但直到該作業終止(由於無法啟動或透過某種方式關閉瀏覽器)。