mkfifo foo
printf %s\\n bar | tee foo &
tr -s '[:lower:]' '[:upper:]' <foo
wait
rm foo
Este é um script de shell POSIX funcional do que eu quero fazer:
printf %s\\n bar
é simbólico para um programa externo que produz stdouttr -s '[:lower:]' '[:upper:]'
é simbólico para outro comando que deve receber o stdout e fazer algo com eletee
duplica stdout para pipe nomeado foo
E a saída é como esperado:
bar
BAR
Agora eu gostaria de arrumar o código para que ele se torne external_program | my_function
. Algo assim:
f() (
mkfifo foo
tee foo &
tr -s '[:lower:]' '[:upper:]' <foo
wait
rm foo
)
printf %s\\n bar | f
Mas agora não há saída alguma.