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