Как сравнить метки времени файла в ударе?

Как я сравниваю метку времени двух файлов?

Я попробовал это, но это не работает:

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

Так в основном, если сравнение не работает, я предполагаю. Или если существует какой-либо другой хороший путь, чем, что я делаю, сообщите мне. Что я должен изменить?

16
задан 28.07.2014, 16:09

3 ответа

Операторы для сравнения меток времени:

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

Мнемосхема легка: 'более новый, чем' и 'более старый, чем'.

26
ответ дан 07.12.2019, 10:50

if не является волшебным. Это пытается работать, команда передала ему, и проверки, если это имеет нулевой статус выхода. Это также не обрабатывает несуществующие аргументы хорошо, который является, почему необходимо заключить в кавычки переменные, используемые в нем.

if [ "$file1time" -gt "$file2time" ]
1
ответ дан 07.12.2019, 10:50

Это из-за некоторых недостающих пробелов. [ команда, таким образом, она должна иметь пробелы вокруг этого и ] специальный параметр должен сказать это где его концы строки команды. Так, Ваша тестовая строка должна быть похожей:

if [ $file1time -gt $file2time ];
5
ответ дан 07.12.2019, 10:50

Теги

Похожие вопросы