Você pode usar pipes nomeados e awk
para dividir a saída em 3 origens. Então você pode ler (uma vez) de cada fonte.
mkfifo pipe1 pipe2 pipe3
free -m | sed -n 2p | awk '{ print $3 >> pipe1; print $6 >> pipe2; print $7 >> pipe3 }'
Os pipes nomeados pipe1
et al. agir como buffers que você pode ler como se fossem pipelines.
cat pipe1 | this | that | the-other
ou de preferência sem cat
:
this < pipe1 | that | the-other
Observe que, depois de ler os dados de um canal, os dados desaparecem, como se sua entrada viesse de um canal comum.