Você pode usar o comando tee , que aceita entrada de stdin e grava a saída em stdout mais um arquivo.
command | (umask 077; exec tee "/tmp/out.$$")
Então você pode test -s "/tmp/out.$$" para ver se é de comprimento zero ou não. (Observe que $$ se expande para o pid atual, o que ajuda a evitar processos semelhantes que se sobrescrevem. Você pode preferir usar mktemp , quando disponível, para evitar problemas em que um invasor adivinha o nome do arquivo e criar um symlink em seu lugar)