我想知道是否有一种方法可以生成过去一小时的 unixtime 秒数。所以 3600 个时间戳。有没有快速日期命令?
答案1
看起来像是一份工作seq
:
seq "$(( $(date +%s) - 3599 ))" "$(date +%s)"
或者避免由于“date”被执行两次而导致的竞争条件:
NOW=$(date +%s); seq "$(( NOW - 3599 ))" "$NOW"
(3599 是这样你就可以得到“3600 个时间戳”)
答案2
POSIXly:
awk '
BEGIN {
srand(); now = srand()
for (i = now - 3599; i <= now; i++) print i
}'
有趣的是,这是基于这样一个事实:传统上,当在srand()
没有值的情况下调用时,会使用当前时间。这是 POSIX 指定的,但没有明确指出要使用纪元秒。我要求 POSIX 澄清也许允许实现使用更好的熵源来为伪随机生成器提供种子,但是他们选择要求使用 UNIX 纪元时间,因此上面的代码应该保证在未来一段时间内可以工作(作为例外,它目前不适用于 OpenBSD awk
)。