Я пытаюсь с помощью скрипта проверить, является ли apt-кеш старше 10 минут
if [ "($(date +%s) - $(stat -c %Z /var/lib/apt/periodic/update-success-stamp)) -ge 600000" ]; then
echo true
fi
Но даже если кешу уже 1 минута, это возвращает true. Что я делаю не так?
То, что Вы делаете, не является вычитанием, скорее Вы помещаете "-" символ между двумя значениями. Вы видите это путем попытки.
echo "($(date +%s) - $(stat -c %Z /var/lib/apt/periodic/update-success-stamp))"
, который дает в моем случае
(1403616665 - 1403583368)
, корректный оператор должен быть
echo "$[$(date +%s) - $(stat -c %Z /var/lib/apt/periodic/update-success-stamp)]"
, который правильно дает
33297
Также из-за наиболее удаленных кавычек, оператор "($(date +%s) - $(stat -c %Z /var/lib/apt/periodic/update-success-stamp)) -ge 600000"
рассматривают как первое значение, которое сравнивается nothing
, вот почему это всегда дает истинный результат.
Округление этого всего, сценарий был бы
if [ "$[$(date +%s) - $(stat -c %Z /var/lib/apt/periodic/update-success-stamp)]" -ge 600000 ]; then
echo true
fi