Die Standardmethode zum Testen, ob eine Datei leer ist test -s FILE
, ist natürlich mit , aber einer unserer Kunden hat ein Skript erhalten, das Tests wie diese enthält:
RETVAL=`ls -s ./log/cr_trig.log | awk '{print $1}'`
if test $RETVAL -ne 0
then
echo "Badness: Log not empty"
exit 25
fi
Mit der Behauptung des Lieferanten, dass es in den beiden Umgebungen funktioniert, in denen es getestet wurde. Es erübrigt sich zu erwähnen, dass es an beiden Stellen, an denen ich es getestet habe, schwer fehlgeschlagen ist.
Also wurde ich neugierig. Wann wird für leere Dateien ls -s
gedruckt 0
?
Dies sind meine bisherigen Ergebnisse:
- GFS unter Linux: 4
- ext4 unter Linux: 0
- ZFS unter Solaris: 1
- UFS unter Solaris: 0
- jfs unter AIX: 0
- VxFS unter HP-UX: 0
- HFS unter HP-UX: 0
- HFS unter Mac OS X: 0
Ich habe vernetzte Dateisysteme noch nicht untersucht.
Frage: Wie kann ich den anderen elegant erklären, dass ihre Skripte falsch sind ?
Meiner Meinung nach wäre die "richtige" Version:
if test ! -s ./log/cr_trig.log
then
echo "Badness: Log not empty"
exit 25
fi