如何比较两个文件的时间戳?
我尝试了这个但是没有用:
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
基本上如果我猜比较不起作用。或者如果除了我的方法之外还有其他更好的方法,请告诉我。我需要改变什么?
答案1
比较时间戳的运算符有:
[ $file1 -nt $file2 ]
[ $file1 -ot $file2 ]
助记符很简单:“比...更新”和“比...更旧”。
答案2
这是因为缺少一些空格。[
是一个命令,所以它周围必须有空格, 是]
一个特殊参数,用于告诉它命令行的结束位置。因此,您的测试行应如下所示:
if [ $file1time -gt $file2time ];
答案3
if
并不是魔法。它会尝试运行传递给它的命令,并检查其退出状态是否为零。它也不能很好地处理不存在的参数,这就是为什么你应该用引号括住其中使用的变量。
if [ "$file1time" -gt "$file2time" ]
答案4
if ( [ $file1time -gt $file2time ] );
then
doSomething
fi