แน่นอนวิธีมาตรฐานในการทดสอบว่าไฟล์ว่างเปล่าtest -s FILE
แต่ลูกค้าคนหนึ่งของเราได้รับสคริปต์ที่มีการทดสอบดังนี้:
RETVAL=`ls -s ./log/cr_trig.log | awk '{print $1}'`
if test $RETVAL -ne 0
then
echo "Badness: Log not empty"
exit 25
fi
ด้วยการอ้างสิทธิ์จากซัพพลายเออร์ว่าทำงานได้ในสภาพแวดล้อมทั้งสองที่พวกเขาได้ทำการทดสอบมาโดยไม่จำเป็นต้องบอกว่ามันล้มเหลวทั้งสองแห่งที่ฉันทดสอบ
ดังนั้นฉันอยากรู้ เมื่อไหร่ls -s
พิมพ์0
ไฟล์เปล่า?
นี่คือสิ่งที่ฉันค้นพบ:
- GFS บน Linux: 4
- ext4 บน Linux: 0
- ZFS บน Solaris: 1
- UFS บน Solaris: 0
- jfs บน AIX: 0
- VxFS บน HP-UX: 0
- HFS บน HP-UX: 0
- HFS บน Mac OS X: 0
ฉันยังไม่ได้ตรวจสอบระบบไฟล์ในเครือข่าย
คำถาม: ฉันจะอธิบายให้คนอื่นฟังว่าสคริปต์ของพวกเขาผิดไปได้อย่างไร?
ในความคิดของฉันรุ่น "ถูกต้อง" จะเป็น:
if test ! -s ./log/cr_trig.log
then
echo "Badness: Log not empty"
exit 25
fi