Os comandos em uma função são executados com o mesmo stdin e stdout que a própria função, então podemos apenas colocar um pipeline em uma função, e manter a função em outro pipeline, como se fosse qualquer outro comando:
func() {
tr a x |
tr b x
}
echo abc | func | tr c x
Isto imprime xxx
.