bash: обновлять apt-get, только если кеш apt старше 10 минут

Я пытаюсь с помощью скрипта проверить, является ли apt-кеш старше 10 минут

if [ "($(date +%s) - $(stat -c %Z /var/lib/apt/periodic/update-success-stamp)) -ge 600000" ]; then
echo true
fi

Но даже если кешу уже 1 минута, это возвращает true. Что я делаю не так?

3
задан 24 June 2014 в 17:15

1 ответ

То, что Вы делаете, не является вычитанием, скорее Вы помещаете "-" символ между двумя значениями. Вы видите это путем попытки.

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
5
ответ дан 24 June 2014 в 17:15

Другие вопросы по тегам:

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