linux脚本将在2011年11月6日结束,但不会在2011年11月7日结束(循环日期)

linux脚本将在2011年11月6日结束,但不会在2011年11月7日结束(循环日期),linux,shell,date,Linux,Shell,Date,我需要为一系列日期运行一个特定的命令。为此,我编写了一个简单的脚本,该脚本将循环遍历日期,其格式与使用date命令的命令所期望的格式相同: 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="

我需要为一系列日期运行一个特定的命令。为此,我编写了一个简单的脚本,该脚本将循环遍历日期,其格式与使用date命令的命令所期望的格式相同:

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
如果我将enddate设置为“2011年11月6日”,脚本将在2011年11月5日打印后按预期停止。但是,如果我如上所述将enddate设置为“2011年11月7日”,脚本将永远打印出“2011年11月6日”。我似乎不明白为什么…有什么想法吗?
谢谢。

您可以使用或

我想我已经解决了问题-由于夏令时,将2011年11月6日增加一天将导致2011年11月6日23:00:00而不是2011年11月7日!假设我可以在这个特殊情况下加上“如果”

我想我已经解决了这个问题——由于夏令时的原因,将2011年11月6日增加一天会导致2011年11月6日23:00:00,而不是2011年11月7日!假设我可以为这个特殊情况输入一个“如果”。你可以发布你的答案,然后接受你自己的答案,给你一些新的声誉点数。顺便说一句,你的代码在UWIN和mingw环境中为我工作。祝你好运。也许你可以加上一个午间小时:分钟:秒来避免白天谚语时间的问题,那么+/-1小时就不会变成一天。