次の小さなawkスクリプトを使用して電子メール通知を受け取ります。しかし、このメールを受けたいです。ただ$1
100以上の場合。
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を返します。
|| exit
awk
コマンドが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])