bash에서 파일 타임 스탬프를 비교하는 방법은 무엇입니까? 타임 스탬프를 순서대로 인쇄했고 나에게 그것을

두 파일의 타임 스탬프를 어떻게 비교합니까?

나는 이것을 시도했지만 작동하지 않습니다 :

file1time=`stat -c %Y fil1.txt`
file2time=`stat -c %Y file2.txt`
if[$file1time -gt $file2time];
then
 doSomething
fi

나는 타임 스탬프를 순서대로 인쇄했고 나에게 그것을 준다.

1273143480
1254144394
./script.sh: line 13: [1273143480: command not found

그래서 기본적으로 경우 비교가 작동하지 않는 것 같아요. 또는 내가하고있는 것보다 다른 좋은 방법이 있으면 알려주십시오. 무엇을 변경해야합니까?



답변

타임 스탬프를 비교하는 연산자는 다음과 같습니다.

[ $file1 -nt $file2 ]
[ $file1 -ot $file2 ]

니모닉은 쉽습니다 : ‘보다 큼’및 ‘보다 큼’.


답변

이것은 공백이 없기 때문입니다. [는 명령이므로 주변에 공백이 있어야 ]하며 쉼표 줄이 끝나는 위치를 알려주는 특수 매개 변수입니다. 따라서 테스트 라인은 다음과 같아야합니다.

if [ $file1time -gt $file2time ];


답변

if마법이 아닙니다. 전달 된 명령을 실행하려고 시도하고 종료 상태가 0인지 확인합니다. 또한 존재하지 않는 인수를 잘 처리하지 않으므로 사용되는 변수를 인용해야합니다.

if [ "$file1time" -gt "$file2time" ]


답변

if ( [ $file1time -gt $file2time ] );
then
 doSomething
fi                                                                    


답변