Uuencode не прикрепляет файл к электронной почте и grep не перечисляет имена файлов

Я пытался понять это, но неважно, что я пытаюсь, похоже, это не работает так, как я хочу. В основном, чего не хватает, так это того, что grep не выводит имена файлов, когда находит совпадение (что, я думаю, и должен делать флаг -H), а uuencode, похоже, не хочет прикреплять файл в электронная почта. Я пробовал и uuencode, и cat, и ничего не получилось.

Кто-нибудь знает, в чем может быть проблема здесь?

for i in `ls SystemOut_*[0-9].log`; do
    grep -inEH '^\[.*(error|exception)' $i >> scannedErrors.txt;
    mv "$i" "${i%.log}"_scanned.log;
done
if [[ -s scannedErrors.txt ]]; then
    uuencode scannedErrors.txt | mailx -s "Scanned Logfile Errors" someone@somewhere.com < Message.txt;
fi
/bin/rm scannedErrors.txt;

2 ответа

Пытаться:

{ cat scannedErrors.txt|uuencode scannedErrors.txt;cat Message.txt;}|mailx -s "Scanned Logfile Errors" someone@somewhere.com

потому что есть конфликт между | и <

uuencode scannedErrors.txt ожидает ввода - когда вызывается только с одной опцией, он рассматривает эту опцию как имя файла для включения в вывод, а не имя файла для чтения. Так что либо делай cat scannedErrors.txt | uuencode scannedErrors.txt или же uuencode scannedErrors.txt scannedErrors.txt,

Я не вижу ничего плохого в grep немного, но может быть полезно поставить cat scannedErrors.txt там, чтобы убедиться, что вы найдете то, что вы хотите. Вы могли бы также сделать grep ... SystemOut_*[0-9].log а не для цикла, который сделал бы -H по умолчанию, но вам, вероятно, все еще понадобится цикл for для переименования, если только у вас нет rename Доступен скрипт (Perl-скрипт, позволяющий переименовывать объявления с помощью регулярных выражений).

Другие вопросы по тегам