Bash stores the exitcodestatus of piped commands in the environment variable PIPESTATUS
So you can just echo ${PIPESTATUS[@]}
to get them all.
13:52:30 ✔ claus:~$ ps ax | grep /usr/bin/ruby
13205 pts/20 S+ 0:00 grep --color=auto /usr/bin/ruby
13:52:43 ✔ claus:~$ echo ${PIPESTATUS[@]}
0 0
PIPESTATUS
is an array, so you can get the exitcode of an specific command (first pipe):
13:54:20 ✔ claus:~$ echo ${PIPESTATUS[1]}
0