說我想要一個bash腳本的某個塊,只有在上午8點(8:00)和下午5點(17:00)之間執行,否則什麼也不做。腳本不斷運行。比較時間使用日期命令
到目前爲止,我正在使用date
命令。
如何使用它來比較它的時間範圍?
說我想要一個bash腳本的某個塊,只有在上午8點(8:00)和下午5點(17:00)之間執行,否則什麼也不做。腳本不斷運行。比較時間使用日期命令
到目前爲止,我正在使用date
命令。
如何使用它來比較它的時間範圍?
只是檢查當天的當前時間是8和5之間 - 因爲你使用的輪數,你甚至不必渣土周圍分鐘:
hour=$(date +%H)
if [ "$hour" -lt 17 -a "$hour" -ge 8 ]; then
# do stuff
fi
當然,這8:00:00爲真,5:00:00爲假;希望這不是什麼大不了的事情。
對於更復雜的時間範圍內,更簡單的方法可能是轉換回UNIX時間,你可以更容易地比較:
begin=$(date --date="8:00" +%s)
end=$(date --date="17:00" +%s)
now=$(date +%s)
# if you want to use a given time instead of the current time, use
# $(date --date=$some_time +%s)
if [ "$begin" -le "$now" -a "$now" -le "$end" ]; then
# do stuff
fi
當然,我已經回答了一個問題,問的錯誤。正如巨人所暗示的那樣,你可以使用一個cron工作 - 它可以在8開始服務,並且在5之後,或者在預期的時間間隔運行它。
爲什麼不使用cron作業?
否則
if [[ `date +%H` -ge 8 && `date +%H` -lt 17 ]];then
do_stuff()
fi
將做的工作
在這種情況下你會如何使用cron作業? – vehomzzz 2010-05-24 18:23:52
cron作業的問題在於,它會在指定的時間或指定的時間內啓動作業,並且可以定期執行作業,但如果作業在一段時間結束後仍在運行,那麼它就沒有辦法結束作業。所以,對於某些用途,日期比較方法更好。 – 2010-05-24 18:35:26
不應該這是結束= $(日期--date = 「17」 +%S)? – vehomzzz 2010-05-24 18:49:55
@Andrei:當然。對不起,在第一個例子中,至少...... – Cascabel 2010-05-24 19:06:23