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.