バックグラウンドでプロセスを実行し、現在の端末を終了する必要があります。
次のコマンドを実行するとエラーが発生します。
> google-chrome-stable &! && exit
zsh: parse error near '&&'
私は単に「google-chrome-stable&!」を呼び出してifステートメントを介してエラーコードをチェックすることを検討しましたが、これを行うより簡単な方法を探したいと思います。
答え1
&!
2つの個別のコマンドがあるため、2つの&&
コマンドを組み合わせることはできません。
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(ただし、プロセスを拒否したためインポートできません)を使用して、バックグラウンドジョブの実際の終了ステータスのみを取得できます。バックグラウンドジョブの実際の終了ステータスを取得します。シェルは子プロセスのプロセスと見なされなくなり、シェルの現在のタスクのリストから削除されました。
あなたがそれをあきらめなかった場合、おそらく
google-chrome-stable & chrome_pid=$!
その後、コマンドはwait $chrome_pid
最終的にバックグラウンドジョブの終了状態で終了しますが、そのジョブが終了するまで終了しません(いずれの方法でもブラウザの起動または閉じに失敗したため)。