Envie um liner para verificar se nulo antes de enviar [duplicado]

1

Estou tentando modificar um script que envia por e-mail um grupo de usuários para o conteúdo de um diretório. A modificação que estou procurando é verificar o script abaixo para ver se ele tem saída válida antes do envio.

O script é:

cd $foo/bar && ls | mail -s "Filenames in the \$foo/bar Directory" [email protected]

Eu quero testar se o arquivo é nulo antes de enviar este e-mail, já que isso vai para três dúzias de servidores e muitos para a mesma pessoa / pessoas, então não quero enviar um monte de e-mails em branco o status quo).

Eu olhei para outras questões semelhantes, mas nenhuma delas arranhou a coceira. Este é o mais próximo:

link

mas é para um arquivo anexado, que não funciona. Além disso, man mail retorna um sinalizador -E que deve executar a verificação de conteúdo, mas eu já joguei com ele e minha versão não suporta a opção -E (que não é algo que possa ser prontamente alterado). Eu recebo um erro mail: invalid option -- E .

Qualquer ajuda seria apreciada. Não tem que ser um forro, mas isso certamente ajudaria!

EDIT - Eu preciso que os diretórios sejam descartados na verificação de saída, se isso for possível! Eu não esclareci isso originalmente, mas se $ foo / bar tiver um diretório de /errors , isso pode ser evitado?

    
por SomeGuy 12.07.2016 / 00:53

2 respostas

2

Você poderia testar com wc -l , algo como:

cd $foo/bar && [ 'ls | wc -l' -gt 0 ] && ls | mail
    
por 12.07.2016 / 01:03
1

Já fiz isso antes com uma configuração semelhante a:

out='cd $foo/bar && ls' ; [[ -n "$out" ]] && echo "$out" | mail -s "Filenames in the \$foo/bar Directory" [email protected]
    
por 12.07.2016 / 01:04