If I call some command, for instance an `echo` I can use the results from that command in several other commands with `tee`. Example:

```
echo "Hello world!" | tee >(command1) >(command2) >(command3)

```

With cat I can collect the results of several commands. Example:

```
cat <(command1) <(command2) <(command3)

```

I would like to be able to do both things at the same time, so that I can use `tee` to call those commands on the output of something else (for instance the `echo` I've written) and then collect all their results on a single output with `cat`.

It's important to keep the results in order, this means the lines in the output of `command1`, `command2` and `command3` should not be intertwined, but ordered as the commands are (as it happens with `cat`).

There may be better options than `cat` and `tee` but those are the ones I know so far.

I want to avoid using temporary files because the size of the input and output may be large.

How could I do this?

PD: another problem is that this happens in a loop, that makes harder handling temporary files. This is the current code I have and it works for small testcases, but it creates infinite loops when reading and writing from the auxfile in some way I don't understand.

```
somefunction()
{
  if [ $1 -eq 1 ]
  then
    echo "Hello world!"
  else
    somefunction $(( $1 - 1 )) > auxfile
    cat <(command1 < auxfile) \
        <(command2 < auxfile) \
        <(command3 < auxfile)
  fi
}

```

Readings and writings in auxfile seem to be overlapping, causing everything to explode.