물론 파일이 비어 있는지 테스트하는 표준 방법은입니다 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
합니까?
이것은 지금까지 나의 발견입니다.
- 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