Der logische Bash-Vergleich gibt die falsche Antwort für RCS-Dateien mit der Endung ,v

Der logische Bash-Vergleich gibt die falsche Antwort für RCS-Dateien mit der Endung ,v

Der Befehl ls -al dog RCS/dog,vgibt zurück

-rw-r--r-- 1 simon simon   0 Apr 13 19:25 dog
-r--r--r-- 1 simon simon 191 Apr 13 19:28 RCS/dog,v

was darauf hinweist, dass es RCS/dog,vneuer ist als dog, aber

if [[ RCS/$dog* -nt dog ]] ; then echo not older than dog ; else echo older than dog ; fi

gibt zurück older than dog. Da dieser Vergleich für Dateien, die nicht mit ,v enden, korrekt durchgeführt wird, scheint es ein Problem mit Dateien zu geben, die mit enden ,v. Kann mir bitte jemand einen Vorschlag machen, wie man das beheben kann?

Antwort1

In Ihrem Beispiel beziehen Sie sich auf eineVariablewo Ihr Ausdruck einwörtlich:

if [[ RCS/$dog* -nt dog ]] ; then echo not older than dog ; else echo older than dog ; fi

Das ist,

  • Dies ist eine Variable:$dog, und wenn nicht gesetzt, erhalten Sie etwas wieRCS/*(oder etwas anderes, wenn$dogist eingestellt aufcat).

  • Dies ist wörtlich gemeint:dog, UndRCS/dog*würde passenRCS/dog,v

verwandte Informationen