bash:仅当 apt 缓存超过 10 分钟时才更新 apt-get

bash:仅当 apt 缓存超过 10 分钟时才更新 apt-get

我正在尝试使用脚本来测试 apt 缓存是否已超过 10 分钟

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

但即使缓存已存在 1 分钟,也会返回 true。我做错了什么?

答案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

相关内容