0

私はこれを理解しようとしてきましたが、何を試しても、思い通りに機能していないようです。基本的に欠けているのは、grepが一致を見つけたときにファイル名をリストしていないことです(これは-Hフラグが行うべきことだと思いますか?)そしてuuencodeはファイルを添付したくないようですEメール。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;
4

2 に答える 2

0

試す :

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

| の間に競合があるためです。そして<

于 2012-06-20T14:58:12.063 に答える
0

uuencode scannedErrors.txtは入力を期待しています - 1 つのオプションのみで呼び出された場合、そのオプションを、読み取るファイルの名前ではなく、出力に含めるファイルの名前として扱います。したがって、cat scannedErrors.txt | uuencode scannedErrors.txtまたはのいずれかを行いますuuencode scannedErrors.txt scannedErrors.txt

必ずしもビットに問題があるとは限りませんが、必要なものを確実に見つけるためにそこにgrepa を入れると役立つ場合があります。for ループではなく、デフォルトにすることもcat scannedErrors.txtできますが、スクリプト (正規表現を介して創造的な名前変更を可能にする perl スクリプト) を利用できない限り、名前を変更するためにおそらく for ループが必要になるでしょう。 )。grep ... SystemOut_*[0-9].log-Hrename

于 2012-06-20T13:46:52.663 に答える