SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【bash】ファイルが空でなかったら末尾100行ぐらいをメール送信する

問題

あるファイルが空でなかったら、そのファイルの末尾100行をメール送信するシェルスクリプトを書け。

答え

1、あるファイルの末尾100行の取得
tail -n 100 /var/log/hoge
2、あるファイルの末尾100行のメール送信
tail -n 100 /var/log/hoge | mail -s 'log report' xxxx@example.com
3、あるファイルが空かどうかの確認
test -s /var/log/hoge

または

[ -s /var/log/hoge ]

-s 演算子は、ファイルが存在して、空ファイルでないないとき真。

上のコマンドの後で echo $? で戻り値を確認すると、真なら正常終了 0、偽なら異常終了 1が返ってきているのがわかる。

4、あるコマンドが正常終了したら、次のコマンドを実行する

下のように && でつなぐ。

date && ls

    ↓    ↓    ↓    ↓

あるファイルが空でないとき、そのファイルの末尾100行のメール送信
test -s /var/log/hoge && tail -n 100 /var/log/hoge | mail -s 'log report' xxxx@example.com

関連するメモ

コメント