Intereting Posts
Создание задания cron и просмотр его вывода в режиме реального времени Невозможно привязать локальное доменное имя к моей системе Как отслеживать определенные файлы в unix Как я могу захватить два столбца вывода ls в сценарии bash Понимание кодов пробуждения ACPI / DSDT (таблица характеристик дифференцированной системы) BIOS Thinkpad T430s Как исправить NetworkManager в Debian с вопросительным знаком, даже если сеть работает? Как установить несколько версий GCC (GCC-3.3) на Ubuntu 16? процесс ожидания семафора Порт открыт высоко в течение нескольких минут чаще Как и где я могу навсегда установить файл $ program, чтобы иметь дополнительный аргумент '&' Отсутствуют заголовки ядра, но им необходимо установить драйвер Wifi Как просматривать и изменять метаданные аудио и видео файлов? Как установить несколько версий одного и того же пакета в Gentoo? Как навсегда переделать кепку в esc в X11? Замените строку в файле и перезапишите файл

Отправьте один лайнер, чтобы проверить, нет ли null перед отправкой

Я пытаюсь изменить скрипт, который отправляет группе пользователей содержимое каталога. Модификация, которую я ищу, – это проверить сценарий ниже, чтобы увидеть, имеет ли он действительный вывод перед отправкой.

Скрипт:

cd $foo/bar && ls | mail -s "Filenames in the \$foo/bar Directory" john.smith@who.com

Я хочу проверить, имеет ли файл значение null перед отправкой этого сообщения, так как это будет продолжаться на трех десятках серверов и многих на одного человека / людей, поэтому я не хочу отправлять пустые пустые письма (это статус-кво ).

Я рассмотрел другие подобные вопросы, но никто из них не царапает зуд. Это самое близкое:

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

Любая помощь будет оценена по достоинству. Это не должен быть один лайнер, но это обязательно поможет!

EDIT – мне нужно, чтобы каталоги были уволены в выходной проверке, если это возможно! Я не объяснил это первоначально, но если в $ foo / bar есть каталог /errors этого можно избежать?

Вы можете попробовать тестирование с помощью wc -l , например:

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

Я сделал это раньше с настройкой, подобной:

 out=`cd $foo/bar && ls` ; [[ -n "$out" ]] && echo "$out" | mail -s "Filenames in the \$foo/bar Directory" john.smith@who.com