我正在尝试使用脚本来测试 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