Este é o comportamento pretendido da variável COPROC_PID
, embora não esteja documentado no manual do Bash.
A solução correta é fazer exatamente o que você fez; salve o valor de $COPROC_PID
em uma variável que não será desfeita quando o co-processo terminar.
Observe que isso não funcionará se o co-processo sair antes que você tenha tempo de obter seu PID, portanto, pode ser prudente certificar-se de que sua variável tenha um valor antes de usá-lo.
Referência: link