a comparação lógica do bash fornece a resposta errada para arquivos RCS que terminam em, v

a comparação lógica do bash fornece a resposta errada para arquivos RCS que terminam em, v

O comando ls -al dog RCS/dog,vretorna

-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,vé mais recente que dog, ainda

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

retorna older than dog. Como para um arquivo que não termina em ,v esta comparação é executada corretamente, parece haver um problema com arquivos que terminam em ,v. Alguém poderia sugerir como consertar isso, por favor?

Responder1

No seu exemplo, você está se referindo a umvariávelonde sua expressão espera umliteral:

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

Aquilo é,

  • Esta é uma variável:$doge, se não estiver definido, você obterá algo comoRCS/*(ou outra coisa se$dogacontece que está definido paracat).

  • Isto é literal:dog, eRCS/dog*combinariaRCS/dog,v

informação relacionada