bash 논리적 비교는 ,v로 끝나는 RCS 파일에 대해 잘못된 대답을 제공합니다.

bash 논리적 비교는 ,v로 끝나는 RCS 파일에 대해 잘못된 대답을 제공합니다.

명령이 ls -al dog RCS/dog,v반환됩니다.

-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

RCS/dog,v이보다 최신임을 나타냅니다 dog.

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

반환합니다 older than dog. ,v로 끝나지 않는 파일의 경우 이 비교가 올바르게 수행되므로 .v로 끝나는 파일에 문제가 있는 것 같습니다 ,v. 누군가 이 문제를 해결하는 방법을 제안해 주실 수 있나요?

답변1

귀하의 예에서, 당신은변하기 쉬운당신의 표현이 기대하는 곳오자:

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

그건,

  • 이것은 변수입니다:$dog, 설정되지 않은 경우 다음과 같은 결과가 표시됩니다.RCS/*(또는 대신 다른 것$dog으로 설정되는 경우가 있습니다cat).

  • 이것은 리터럴입니다:dog, 그리고RCS/dog*일치할 것이다RCS/dog,v

관련 정보