두 명령을 병렬로 실행하고 그 중 하나가 종료 코드 0으로 종료되면 종료하는 방법은 무엇입니까?

두 명령을 병렬로 실행하고 그 중 하나가 종료 코드 0으로 종료되면 종료하는 방법은 무엇입니까?

동시에 실행하고 싶은 명령이 2개 있습니다. 그 중 하나가 코드 0 또는 1로 종료되면 스크립트가 종료되기를 원합니다. Linux(Ubuntu)에서 이를 달성하려면 어떻게 해야 합니까?

cmd1 &
cmd2 &
wait

답변1

이 같은:

(cmd1; [ "$?" -lt 2 ] && kill "$$") &
(cmd2; [ "$?" -lt 2 ] && kill "$$") &
wait

답변2

4.4 이상 bash:

cmd1 & p1=$!
cmd2 & p2=$!

wait -n
[ "$?" -gt 1 ] || kill "$p1" "$p2"
wait

wait -n첫 번째 백그라운드 작업이 완료될 때까지 기다리고 종료 상태를 보고합니다.$?.

첫 번째 작업이 0 또는 1로 종료될 때 다른 작업을 종료한다고 가정해 보겠습니다. 변화kill명령하다exit스크립트를 종료하고 상위-하위 관계 없이 다른 명령을 실행하려는 경우.

관련 정보