linux 脚本于 2011 年 11 月 6 日结束,但不是 2011 年 11 月 7 日结束(循环日期)
我需要为一堆日期运行特定命令。为此,我编写了一个简单的脚本,该脚本将循环遍历日期,其格式设置为命令将使用 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 设置为“6-Nov-2011”,则脚本将在打印 5-Nov 后按预期停止-2011年。但是,如果我将结束日期设置为“2011 年 11 月 7 日”,脚本将永远打印出“2011 年 11 月 6 日”。我似乎不明白为什么......有什么想法吗? 谢谢。
I need to run a specific command for a bunch of dates. To that end, I wrote a simple script that will loop through dates, formatted as the command will expect them using the date command:
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
If I set enddate to "6-Nov-2011" the script will stop as expected after printing 5-Nov-2011. However If i set enddate to "7-Nov-2011" as above, the script will print out "6-Nov-2011" forever. I can't seem to figure out why...any ideas?
Thank You.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 at 或 crontab
You could use at or crontab
我想我已经解决了问题 - 由于夏令时,将 2011 年 11 月 6 日增加一天会导致 2011 年 11 月 6 日 23:00:00 而不是 2011 年 11 月 7 日!假设我可以为这种特殊情况添加一个“如果”。
I think I figured out the problem - due to daylight savings time, incrementing 6-Nov-2011 by one day results in 6-Nov-2011 23:00:00 instead of 7-Nov-2011! Suppose I can put in an "if" for this special case.