Bash

將程序(bash 腳本)暫停到特定時間

  • April 25, 2020

我想暫停某個 bash 腳本 30 分鐘。現在我使用sleep 1800,但這沒有考慮筆記型電腦可能處於掛起(睡眠)狀態的時間。有沒有辦法做到這一點?

如果現在是下午 12:53,我想在凌晨 1:23 恢復節目。但與此同時,電腦可以處於睡眠狀態。如果電腦一直睡到凌晨 1:23,那麼我希望程序在從睡眠中恢復後立即恢復。

也許將它包裝在一個while循環中並測試您是否在預定時間。

#!/bin/bash                                 

SOON=$(($(date +%s) + 1800))                                   
while [[ "$NOW" -le "$SOON" ]]; do                         
   sleep 1                            
   NOW=$(date +%s)                                     
done         

日期的想法也可以在chepner 的這個答案中找到。自1970 年以來,以秒+%sdate單位格式化日期。$(( ))只是算術增加秒數。用任意數量替換 1800(可能最好用少量測試,看看它是否有效)。sleep 1使腳本每秒檢查一次條件。

引用自:https://unix.stackexchange.com/questions/582387