バックグラウンドでプロセスを実行してから、現在のターミナルを終了する必要があります。
次のコマンドはエラーになります:
> google-chrome-stable &! && exit
zsh: parse error near '&&'
単に「google-chrome-stable&!」を呼び出すことを検討しました。 ifステートメントを介してエラーコードをチェックしますが、これを達成するためのより簡単な方法を特定したいと考えています。
&!
および&&
両方とも別々のコマンドなので、両方を組み合わせることができないので、
google-chrome-stable &! exit
おそらくあなたが求めているものです。
バックグラウンドコマンドが終了するまで、終了コードを取得できません...
バックグラウンドジョブの開始から呼び出し元のシェルに返される終了ステータスは常にゼロです:
% 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
は最終的にバックグラウンドジョブの終了ステータスで終了しますが、開始できないか、何らかの方法でブラウザを閉じることにより、そのジョブが終了するまでは終了しません。