"set -e"를 사용할 때 하위 백그라운드 프로세스가 종료되었는지 확인하는 방법은 무엇입니까?

"set -e"를 사용할 때 하위 백그라운드 프로세스가 종료되었는지 확인하는 방법은 무엇입니까?
set -e

while true; do echo "test"; sleep 1; done &

echo "done"
ueoa

이것을 실행하면 일단 도착하면 ueoa(존재하지 않는 임의의 명령) "종료"되지만 계속 실행됩니다 while true; do echo "test"; sleep 1; done.

이 경우 포그라운드 프로세스도 종료되었는지 어떻게 확인할 수 있나요?

답변1

그렇게:

#!/usr/bin/env bash

trap 'kill $(jobs -p)' ERR

set -e

while true; do echo "test"; sleep 1; done &

echo "done"
ueoa

답변2

#!/bin/bash
set -e
function cleanup()
{
    kill $!
}
trap cleanup ERR
while true; do echo "test"; sleep 1; done &
echo "done"
ueoa

관련 정보