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.