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