Usando a substituição de processos
./myProgram < <(cat A; echo ''; cat B; tail -n +2 C)
<(commands)
cria um arquivo fifo que é então lido no programa
Você pode testar fazendo
$ echo <(cat A; echo ''; cat B; tail -n +2 C)
/dev/fd/63
Process Substitution
is supported on systems that support named pipes
(FIFOs) or the /dev/fd method of naming open files. It takes the form
of <(list) or >(list). The process list is run with its input or out-
put connected to a FIFO or some file in /dev/fd. The name of this file
is passed as an argument to the current command as the result of the
expansion. If the >(list) form is used, writing to the file will pro-
vide input for list. If the <(list) form is used, the file passed as
an argument should be read to obtain the output of list.
When available, process substitution is performed simultaneously with
parameter and variable expansion, command substitution, and arithmetic
expansion.