【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
コメント