I would like the output of A to be input for B and at the same time the output of B to be the input for A, is that possible?
Eu não vejo como isso poderia funcionar.
Se ambos os processos dependem um do outro para gerar a saída, o processo B irá esperar até que o processo A produza alguma saída, mas o processo A não gerará nenhuma saída até receber entrada do processo B.
Ambos os processos bloqueariam para sempre.
EDITAR :
O OP comentou abaixo um caso diferente no qual um processo A gera alguma saída e então espera pela entrada para o processo B, enquanto o processo B simplesmente espera pelo processo A.
Nesse caso, podemos usar "tubulação mútua" para funcionar. Crie dois scripts:
/tmp/multualpipingA
(este script gera alguma saída com echo process A
e aguarda):
#!/bin/bash
echo process A
while read; do
echo process A says: \"$REPLY\"
sleep 1
done < /dev/stdin
e /tmp/multualpipingB
(este script só reage à entrada):
#!/bin/bash
while read; do
echo process B says: \"$REPLY\"
sleep 1
done < /dev/stdin
Agora abra duas sessões de terminal, "1" e "2" e digite nesta ordem:
session1$ mkfifo /tmp/fifo{A,B}
session1$ cat /tmp/fifoB | /tmp/multualpipingB | tee /tmp/fifoA
Enter
session2$ cat /tmp/fifoA | /tmp/multualpipingA | tee /tmp/fifoB
Enter
Você verá esta saída:
process A
process A says: "process B says: "process A""
process A says: "process B says: "process A says: "process B says: "process A""""
e isso:
process B says: "process A"
process B says: "process A says: "process B says: "process A"""
process B says: "process A says: "process B says: "process A says: "process B says: "process A"""""
(testado no OS X 10.8.2 "Montain Lion")