バックグラウンドでプロセスを実行し、現在のターミナルを終了する必要があります。
次のコマンドはエラーになります:
> google-chrome-stable &! && exit
zsh: parse error near '&&'
単に「google-chrome-stable &!」を呼び出して、if ステートメントでエラー コードを確認することを検討しましたが、これを実現するより簡単な方法を見つけたいと思っています。
答え1
&!
どちらも別々のコマンドなので&&
、組み合わせることはできません。
google-chrome-stable &! exit
おそらくあなたが探しているのはそれでしょう。
バックグラウンドコマンドが終了するまで終了コードを取得することはできません...
答え2
バックグラウンドジョブの開始から呼び出しシェルに返される終了ステータスはいつもゼロ:
% 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 は存在しません) またはプロセス ID (そのプロセスを所有を解除したため、シェルが子プロセスと見なすプロセスではなくなり、シェルの現在のジョブのリストから削除されているため、使用できません) を使用する必要があります。
もしあなたが仕事を放棄していなかったら、
google-chrome-stable & chrome_pid=$!
すると、コマンドはwait $chrome_pid
最終的にバックグラウンド ジョブの終了ステータスで終了しますが、そのジョブが開始できないか、何らかの方法でブラウザーを閉じることによって終了するまでは終了しません。