set -e
while true; do echo "test"; sleep 1; done &
echo "done"
ueoa
Wenn ich dies ausführe, ueoa
wird es „beendet“, sobald es (einen zufälligen Befehl, der nicht existiert) erreicht, aber weiter ausgeführt while true; do echo "test"; sleep 1; done
.
Wie kann ich in diesem Fall sicherstellen, dass auch der Vordergrundprozess beendet wird?
Antwort1
So wie das:
#!/usr/bin/env bash
trap 'kill $(jobs -p)' ERR
set -e
while true; do echo "test"; sleep 1; done &
echo "done"
ueoa
Antwort2
#!/bin/bash
set -e
function cleanup()
{
kill $!
}
trap cleanup ERR
while true; do echo "test"; sleep 1; done &
echo "done"
ueoa