O problema com o seu código é que > mypipe
abrirá o fifo, escreverá nele e depois o fechará. Uma vez fechado em qualquer das extremidades, você terá que reabri-lo em ambos . Então, em vez de reabrir o fifo para cada eco, mantenha-o aberto para todo o loop.
for elem in {1..99}; do echo "$elem"; done > mypipe
Btw, no lugar do loop, você poderia usar apenas um printf
printf '%s\n' {1..99} > mypipe
Se você tiver um caso mais complexo. Você pode atribuir um fd para ele.
exec 3> mypipe # opens mypipe for writing on fd 3
echo "stuff" >&3
echo "more stuff" >&3
...
exec 3>&- # closes fd 3
Veja o link para saber mais.