Isso é realmente fácil, na verdade, Primeiro, você precisa deixar de lado seu stdin em algum descritor lembrado:
exec 9<&0
Lá. Você fez uma cópia. Agora, vamos canalizar nossos comandos no nosso shell.
echo 'echo foo; read <&9; echo bar' | bash
... bem, isso foi fácil. Claro que ainda não terminamos. Nós devemos limpar.
exec 9<&-
Ok, agora terminamos.
Mas podemos evitar a limpeza se agruparmos um pouco nossos comandos ...
{ echo 'echo foo; read <&9; echo bar' | bash; } 9<&0
O descritor só sobrevive enquanto o comando composto designado fizer isso nesse caso.