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