Tabii ki, bir dosyanın boş olup olmadığını test etmenin standart yolu şudur test -s FILE
, ancak müşterilerimizden biri böyle testler içeren bir komut dosyası almıştır:
RETVAL=`ls -s ./log/cr_trig.log | awk '{print $1}'`
if test $RETVAL -ne 0
then
echo "Badness: Log not empty"
exit 25
fi
tedarikçinin test ettikleri iki ortamda çalıştığı iddiaları ile. Söylemeye gerek yok, test ettiğim her iki yerde de başarısız oldu.
Merak ettim. Boş dosyalar ne zaman ls -s
yazdırılır 0
?
Şimdiye kadar bulduğum bulgular:
- Linux'ta GFS: 4
- Linux'ta ext4: 0
- Solaris'te ZFS: 1
- Solaris'te UFS: 0
- AIX üzerinde jfs: 0
- HP-UX üzerinde VxFS: 0
- HP-UX üzerinde HFS: 0
- Mac OS X'te HFS: 0
Ağ bağlantılı dosya sistemlerini henüz incelemedim.
Soru: Diğerlerine senaryolarının yanlış olduğunu zarif bir şekilde nasıl açıklayabilirim ?
Bence, "doğru" sürüm:
if test ! -s ./log/cr_trig.log
then
echo "Badness: Log not empty"
exit 25
fi