私がこれを持っているとしましょう:
set -e;
(
docker stop notifier-server
docker rm -f notifier-server
exit 1 # explicitly exit with non-zero
) &
wait;
echo 'we are here now'
サブシェルがゼロ以外の値で終了しても、常にエコーラインに到達しますか?バックエンドプロセス/サブシェルなので、そうです。
この問題を見る正しい方法は何ですか?
ベストアンサー1
プロセスがバックグラウンドプロセスであるかどうかには関係がなく、wait
コマンドの終了状態に関連しています。
からhelp wait
:
IDが指定されていない場合は、現在アクティブなすべての子プロセスが待機し、ステータス0が返されます。
$ bash -exc '(sleep 1; exit 1) & wait ; echo done'
+ wait
+ sleep 1
+ exit 1
+ echo done
done
-nオプションが指定されている場合は、次のジョブが終了するのを待って終了ステータスを返します。
$ bash -exc '(sleep 1; exit 1) & wait -n; echo $?:done'
+ wait -n
+ sleep 1
+ exit 1