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