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

发布于 2024-12-14 11:06:50 字数 561 浏览 0 评论 0原文

我需要为一堆日期运行特定命令。为此,我编写了一个简单的脚本,该脚本将循环遍历日期,其格式设置为命令将使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

指尖凝香 2024-12-21 11:06:50

您可以使用 atcrontab

You could use at or crontab

假装爱人 2024-12-21 11:06:50

我想我已经解决了问题 - 由于夏令时,将 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文