두 파일의 타임 스탬프를 어떻게 비교합니까?
나는 이것을 시도했지만 작동하지 않습니다 :
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