La comparación lógica de bash da la respuesta incorrecta para los archivos RCS que terminan en,v

La comparación lógica de bash da la respuesta incorrecta para los archivos RCS que terminan en,v

El comando ls -al dog RCS/dog,vregresa

-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

indicando que RCS/dog,ves más nuevo que dog, todavía

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

devoluciones older than dog. Dado que para un archivo que no termina en ,v esta comparación se realiza correctamente, parece haber un problema con los archivos que terminan en ,v. ¿Alguien podría sugerir cómo solucionar este problema, por favor?

Respuesta1

En tu ejemplo, te refieres a unvariabledonde tu expresión espera unliteral:

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

Eso es,

  • Esta es una variable:$dog, y si no está configurado, obtendrá algo comoRCS/*(o algo más en su lugar si$dogpasa a estar configurado encat).

  • Esto es literal:dog, yRCS/dog*coincidiríaRCS/dog,v

información relacionada