This is called process substitution and is also available in modern korn shells. Bash used to use named pipes for this, I'm not sure when it stopped using them, I think when Bash supported co-processes. It looks like named pipes (also known as fifo's) would be a suitable solution here. If you are unfamiliar with named pipes, see the man pages for mkfifo(1).