2011-11-08 44 views
1

我需要爲一堆日期運行特定命令。爲此,我寫了一個簡單的腳本,將遍歷日期,格式爲命令將期待他們用date命令:Linux腳本截止日期爲2011年11月6日,但不適用於2011年11月7日(循環日期)

startdate=`/bin/date --date="January 22 2011" +%e-%b-%Y` 
enddate=`/bin/date --date="7-Nov-2011" +%e-%b-%Y` 
echo "Start Date: $startdate" 
echo "End Date: $enddate" 
sleep 5 
incdate="$startdate" 
until [ "$incdate" == "$enddate" ] 
do 
    echo "$incdate" 
    incdate=`/bin/date --date="$incdate 1 day" +%e-%b-%Y` 
done 
exit 

如果我設定結束日期爲「6 - 11月 - 2011」的劇本將停止如預計印刷後2011年11月5日。但是,如果我將enddate設置爲「2011年11月7日」,該腳本將永遠打印出「2011年11月6日」。我似乎無法弄清楚爲什麼......有任何想法? 謝謝。

+0

我想我已經找到了這個問題 - 由於夏令時,2011年11月6日增加一天導致2011年11月6日23:00:00而不是2011年11月7日!假設我可以在這個特例中加入「if」。 – football

+0

你可以發佈你的答案,然後接受你自己的答案,給你一些新的聲望點。順便說一句,你的代碼在UWIN和mingw環境中爲我工作。祝你好運。 – shellter

+2

也許你可以添加一個mid-day小時:min:secs來避免daylight sayings時間問題,然後+/- 1小時不會讓一天轉。 –

回答

0

我想我想通了這個問題 - 由於日光節約時間,以一天導致6 - 11月,2011 23:00:00,而不是遞增6 - 11月 - 2011 2011年11月7日!假設我可以在這個特例中加入「if」。

相關問題