Может, так лучше? finished= func() { <что-то> finished=1 } func & for 1 2 3 4 5; do sleep 1 if [ -n "$finished" ]; then wait break fi done if [ -z "$finished" ]; then echo killing func >&2 kill $! wait fi -- С уважением, Епифанов Сергей