set -e
while true; do echo "test"; sleep 1; done &
echo "done"
ueoa
Si ejecuto esto, una vez que alcance ueoa
(un comando aleatorio que no existe), "terminará" pero seguirá ejecutándose while true; do echo "test"; sleep 1; done
.
¿Cómo puedo asegurarme de que el proceso en primer plano también finalice en este caso?
Respuesta1
Como eso:
#!/usr/bin/env bash
trap 'kill $(jobs -p)' ERR
set -e
while true; do echo "test"; sleep 1; done &
echo "done"
ueoa
Respuesta2
#!/bin/bash
set -e
function cleanup()
{
kill $!
}
trap cleanup ERR
while true; do echo "test"; sleep 1; done &
echo "done"
ueoa