Por supuesto, la forma estándar de probar si un archivo está vacío es con test -s FILE
, pero uno de nuestros clientes ha recibido un script que contiene pruebas como esta:
RETVAL=`ls -s ./log/cr_trig.log | awk '{print $1}'`
if test $RETVAL -ne 0
then
echo "Badness: Log not empty"
exit 25
fi
con las afirmaciones del proveedor de que funciona en los dos entornos en los que lo han probado. No hace falta decir que falló gravemente en los dos lugares donde lo probé.
Entonces, me dio curiosidad. ¿Cuándo se ls -s
imprime 0
para archivos vacíos?
Estos son mis hallazgos hasta ahora:
- GFS en Linux: 4
- ext4 en Linux: 0
- ZFS en Solaris: 1
- UFS en Solaris: 0
- jfs en AIX: 0
- VxFS en HP-UX: 0
- HFS en HP-UX: 0
- HFS en Mac OS X: 0
Todavía no he examinado los sistemas de archivos en red.
Pregunta: ¿Cómo puedo explicar elegantemente a los demás que sus guiones están equivocados ?
En mi opinión, la versión "correcta" sería:
if test ! -s ./log/cr_trig.log
then
echo "Badness: Log not empty"
exit 25
fi