環境
bash4.3
スクリプト
.sh
#!/bin/sh -x
pids=()
# ok.sh は 0 を返す
# ng.sh は 1 を返す
commands=("./ok.sh" "./ng.sh")
for command in ${commands[@]}; do
${command} &
pids+=($!)
done
for pid in ${pids[@]}; do
wait $pid
if [ $? -ne 0 ]; then
exit 1
fi
done
ポイント
-
$!
: 最後に起動したバックグラウンドプロセスのPID -
wait ${pid}
で、対象のpidのプロセスが終了するまで待機 - wait の戻り値は、対象のプロセスの戻り値