Você poderia testar com wc -l
, algo como:
cd $foo/bar && [ 'ls | wc -l' -gt 0 ] && ls | mail
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:
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?
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]
Tags email shell mail-command