shell 睡眠直到下一整分钟

shell 睡眠直到下一整分钟

要在下一个整分钟执行脚本,我想告诉sleep命令休眠直到下一个整分钟。我怎样才能做到这一点?

答案1

询问以秒为单位的日期:并用 60(模: )date +%s计算除法的提醒。%如果您计算 60 减去模数,您将得到到下一个整分钟的剩余秒数。您可以将其更改为等到下一个完整小时(将 60 更改为 3600)。

sleep $((60 - $(date +%s) % 60)) &&
<yourscript>

要睡到下一整分钟,您甚至可以将其缩短(没有模数):

sleep $((60 - $(date +%S) )) &&
<yourscript>

另请注意此问题和答案:睡眠直到下一次出现特定时间

答案2

sleep $(( 60 - 10#$(date +%S) ))睡眠直到下一整分钟。不要忘记10#前缀!否则,您的代码会将“08”和“09”解释为对八进制数的无效引用。

或者,您可以通过在“%”后面添加“-”来防止 date 命令用“0”填充秒 sleep $(( 60 - $(date +%-S) ))

相关内容