Назад | Перейти на главную страницу

Отправить письмо, если скрипт выводит строку

Я нашел эту строку:

sh script.sh | grep 'NO' 2>&1 > grep.log && /usr/bin/mail -s "grep found something" m@mail.com < grep.log

который запишет вывод script.sh в grep.log, а затем отправит его по электронной почте m@mail.com

Есть ли способ удалить часть, где это написано в grep.log, и просто отправить вывод скрипта по почте, не записывая его в файл?

Вы можете записывать вывод в переменную оболочки вместо файла журнала:

found_stuff=$(sh script.sh | grep 'NO' 2>&1) &&
    echo "$found_stuff" | /usr/bin/mail -s "grep found something" m@mail.com

(Примечание: первая строка должна быть простым присваиванием переменной, а не export var= или local var= или declare var= или что-нибудь в этом роде. В тех случаях && зависит от статуса выхода export etc, а не grep.)

Чтобы отправлять письма напрямую, вы можете использовать такую ​​команду:

sh script.sh | grep 'NO' 2>&1 | /usr/bin/mail -s "grep found something" m@mail.com