Para a versão original da pergunta, quando apenas o PID do último comando era desejado, a variável especial $!
é perfeita.
foo | bar | baz &
baz_pid=$!
Não há acesso fácil semelhante aos PIDs dos outros processos.
Demorou muito para que $pipestatus
(zsh) e $PIPESTATUS
(bash) fossem adicionados, finalmente nos dando acesso a todos os status de saída em um pipeline, além do $?
para o último um que existe desde o shell Bourne original. Talvez algo análogo aconteça com $!
eventualmente.