[英]Check for date range with bash scripting
我正在嘗試制作一個從 2020 年 12 月 24 日到 2021 年 6 月 1 日有效的腳本。 現在我 olny 讓它只適用於 2 個日期:
if [ "$(date +'%m%d')" != "1224" ] && [ "$(date +'%m%d')" != "1226" ];
所以這個腳本應該從 12/24 - 01/06 開始工作。 有什么建議么? 謝謝
您可以在date
中使用+%s
選項將開始/結束日期轉換為紀元時間。 您使用-d
選項提供日期。
然后,您再次使用+%s
檢索當前日期並使用標准 integer 比較進行比較,如下所示:
start=$(date +%s -d '12/24/2020')
finish=$(date +%s -d '06/02/2021')
now=$(date +%s)
if [ $now -ge $start ] && [ $now -lt $finish ]
then
echo "Do something"
else
echo "Skip"
fi
編輯:對於完成日期,有必要使用您預定完成日期之后的那一天,並使用-lt
進行比較。 這是因為date
將返回指定日期開始的時間戳。 這樣做,您最終會在 2021 年 6 月 1 日午夜之前比較成功。 感謝@gordon-davisson 指出這一點。
beg='20201224'
end='20210601'
now=$(date +'%Y%m%d')
if (( beg <= now )) && (( now <= end)); then
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.