Se você não está preocupado com o tempo que os dados passam de "foo to bar", e você está bem com um arquivo temporário que precisa ser manipulado no seu alvo limpo, simplesmente:
rcheck:
foo | tee sometempfile
-bar < sometempfile >/dev/null 2>/dev/null
Se, por outro lado, você se importar muito com o timing, poderá fazer com que a barra repita sua entrada para stdout e tente algo como:
rcheck:
-(foo; echo $$? > sometempfile) | bar
exit $(cat sometempfile)
Tenho certeza de que haverá maneiras mais limpas, mas o texto acima veio à mente. (Nota, ambos não foram testados)