もちろん、ファイルが空かどうかをテストする標準的な方法はですがtest -s FILE
、クライアントの1人が次のようなテストを含むスクリプトを受け取りました。
RETVAL=`ls -s ./log/cr_trig.log | awk '{print $1}'`
if test $RETVAL -ne 0
then
echo "Badness: Log not empty"
exit 25
fi
サプライヤからは、テストした2つの環境で動作するという主張がありました。言うまでもなく、テストした2つの場所の両方でひどく失敗しました。
それで、私は興味を持ちました。ない場合はls -s
、印刷0
空のファイルのため?
これはこれまでの私の発見です:
- Linux上のGFS:4
- Linux上のext4:0
- Solaris上のZFS:1
- SolarisのUFS:0
- AIX上のjfs:0
- HP-UX上のVxFS:0
- HP-UX上のHFS:0
- Mac OS X上のHFS:0
ネットワーク化されたファイルシステムについてはまだ調べていません。
質問:スクリプトが間違っていることを他の人にエレガントに説明するにはどうすればよいですか?
私の意見では、「正しい」バージョンは次のようになります。
if test ! -s ./log/cr_trig.log
then
echo "Badness: Log not empty"
exit 25
fi