보내기 전에 편지가 비어 있는지 확인하기 위해 편지를 우편으로 보내기 [중복]

보내기 전에 편지가 비어 있는지 확인하기 위해 편지를 우편으로 보내기 [중복]

사용자 그룹에 디렉토리 내용이 포함된 이메일을 보내는 스크립트를 수정하려고 합니다. 내가 찾고 있는 수정 사항은 보내기 전에 유효한 출력이 있는지 아래 스크립트를 확인하는 것입니다.

스크립트는 다음과 같습니다

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

이 이메일을 보내기 전에 파일이 비어 있는지 테스트하고 싶습니다. 왜냐하면 이 파일은 36개의 서버에서 실행될 것이고 그 중 많은 서버가 동일한 사람에게 전송되므로 빈 이메일을 여러 개 보내고 싶지 않기 때문입니다. 현 상태) .

다른 유사한 질문을 보았지만 그 중 어느 것도 문제를 완전히 해결하지 못했습니다. 이것은 가장 가까운 것입니다:

https://stackoverflow.com/questions/1169612/how-can-i-write-a-shell-script-that-will-email-me-a-file-if-the-file-is-not-empt

하지만 파일을 첨부하는 경우에는 작동하지 않습니다. 추가적으로, 콘텐츠 확인을 수행해야 하는 man mail플래그 -E가 반환되는데, 제가 그것을 사용했는데 제 버전이 해당 -E옵션을 지원하지 않는 것 같습니다(쉽게 변경할 수 있는 기능이 아닙니다). 오류가 발생합니다 mail: invalid option -- E.

어떤 도움이라도 대단히 감사하겠습니다. 한 줄로 작성할 필요는 없지만 확실히 도움이 됩니다!

편집 - 가능하다면 출력 확인에서 디렉토리를 무시해야 합니다! 처음에는 이것을 명확히 하지 않았지만 /errors$foo/bar에 디렉토리가 있으면 이를 피할 수 있습니까?

답변1

예를 들어 다음을 사용하여 테스트해 볼 수 있습니다 wc -l.

cd $foo/bar && [ `ls | wc -l` -gt 0 ] && ls | mail

답변2

이전에 다음과 유사한 설정으로 이 작업을 수행한 적이 있습니다.

out=`cd $foo/bar && ls` ; [[ -n "$out" ]] && echo "$out" | mail -s "Filenames in the \$foo/bar Directory" [email protected]

관련 정보