Existe um hack, mas acho que faz sentido se você precisar de um loop.
você pode abrir cat coproc assim: coproc CAT { cat; }
Isso iniciará um comando cat em segundo plano e definirá duas variáveis de ambiente: CAT_PID e CAT . A variável CAT é uma matriz com STDOUT e STDIN (nesta ordem) descritor de arquivo (pipes) usado por cat .
Assim, você pode executar qualquer coisa gravando a saída em &${CAT[1]} que representa o STDIN e usar o comando interno read para definir a leitura da variável em ${CAT[0]} , que é o STDOUT de cat. / p>
Aqui uma amostra:
coproc CAT { cat; }
echo 123 >&${CAT[1]}
read myvar <&${CAT[0]}
Para testar:
echo $myvar
123
Não se esqueça de parar o gato depois de usá-lo. Você pode fazer isso matando o processo.
kill $CAT_PID
Isso faz uma grande diferença no ajuste de desempenho.
Espero que ajude.