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)