awk は、次の場合に電子メールを送信します。

awk は、次の場合に電子メールを送信します。

次の小さなawkスクリプトを使用して電子メール通知を受け取ります。しかし、このメールを受けたいです。ただ$1100以上の場合。

ifステートメントはどこに配置する必要がありますか?私は成功せずに多くのバージョンを試しました。私のスクリプトに従ってください。

awk '

BEGIN{print "Subject:SASL Spam\nFrom:Server.de <[email protected]>\nTo:[email protected]"}

END{printf("%s\015\n", $1" | "$2)}

' /home/web0/html/tools/uptime/sasl.txt | /usr/lib/sendmail -t [email protected]

ベストアンサー1

次のようにできます(読みやすくするために少し減らしました)。

{ awk 'BEGIN{...} END{...} END{if($1<100){exit(1)}}' file || exit; } > >(sendmail -t ...)
  • awkと言う複合コマンド
    • if($1<100)値の確認
    • exit(1)内部コードの追加実行を中止awkし、終了コード1を返します。
  • || exitawkコマンドがfalse(0より大きい終了コード)を返すと実行されます。その後、シェルを終了してコマンドを実行しないでください。ここではパイプを使用しません。|パイプを使用すると、サブシェルが開き、そのサブシェルが終了し、とにかく次のコマンドが実行されるためです。
  • >(sendmail -t ...)出力が送信されますsendmail(まだ終了していない場合)。

完全なコマンドは次のとおりです。

{ awk 'BEGIN{print "Subject:SASL Spam\nFrom:Server.de <[email protected]>\nTo:[email protected]"}
  END{printf("%s\015\n", $1" | "$2)} END{if($1<100){exit(1)}}' \
/home/web0/html/tools/uptime/sasl.txt || exit; } > >(/usr/lib/sendmail -t [email protected])

おすすめ記事