需要知道距离重要事件还有多少天?让Linuxbash和date命令来帮助你!随着重要假期的临近,您可能需要提醒您还需要准备多长时间。幸运的是,您可以从date命令中获得很多帮助。在这篇文章中,我们将看看日期和bash脚本如何告诉您今天和您的预期事件之间有多少天。首先,在继续之前的一些提示。date命令的%j选项将当前日期显示为1到366之间的数字。如您所料,1月1日将显示为1,而12月31日将显示为365或366,具体取决于它是闰年与否。继续尝试。您应该看到以下内容:$date+%j339但是,您可以通过以下命令在date命令中获取一年中任何一天的编号:$date-d"Mar18"+%j077要记住的是,上面的命令将显示当前年份的日期,即使该日期已过去。但是,您可以通过在命令中添加年份来解决此问题:$date-d"Apr29"+%j119$date-d"Apr292020"+%j120在闰年中,4月29日将是该年的120天,而不是119天。如果你想倒数圣诞节前的日子,又不想在挂历上留下指纹,你可以使用这个脚本:#!/bin/shXMAS=`date-d"Dec25"+%j`TODAY=`date+%j`DAYS=$(($XMAS-$TODAY))case$DAYSin0)echo"今天!圣诞快乐!";;[0-9]*)echo"剩余$DAYS天";;-[0-9]*)echo"Oops,youmissedit";;esac在此脚本中,我们获取12月25日的日期和今天的日期,然后将其相减。如果结果是肯定的,我们将显示剩余天数。如果为零,则发送“圣诞快乐”消息,如果为负,则告诉运行脚本的人他们错过了假期。也许他们沉迷于蛋酒。case语句由用于打印信息的语句组成,当剩余时间等于0,或任意数字或以-符号开头的数字(即过去)时分别打印不同的信息。同样的方法可以用于人们想要关注的任何日期。事实上,我们可以向运行脚本的人询问日期,并让他们知道距该日期还有多少天。脚本看起来像这样。#!/bin/shecho-n"Entereventdate(e.g.,June6):"readdtEVENT=`date-d"$dt"+%j`TODAY=`date+%j`DAYS=`expr$EVENT-$TODAY`case$DAYSin0)echo"今天!";;[0-9]*)echo"剩余$DAYS天";;-[0-9]*)echo"糟糕,你错过了";;esac对这个脚本的一个问题是,如果运行该脚本的人希望知道离明年的特殊日子还有多少天,他们会感到失望。即使他们在输入日期时提供了年份,date-d命令仍然只会给出当年的天数,而不是从现在到那时的天数。计算今天和一年中某个日期之间的天数可能有点棘手。您需要包括所有中间年份,并注意那些闰年。使用Unix纪元时间计算从现在到特定日期之间的天数的另一种方法是利用Unix系统存储日期的方式。如果将自1970年1月1日以来的秒数转换为天数,则可以轻松完成此操作,如以下脚本所示:#!/bin/bashecho-n"Entertargetdate(e.g.,Mar182021)>"readtarget_datetoday=`echo$(($(date--utc--date"$1"+%s)/86400))`target=`echo$(($(date--utc--date"$target_date"+%s)/86400))`days=`expr$target-$today`echo"$daysdaysuntil$target_date"解释一下,86400是一天中的秒数。将此数字除以自Unix纪元以来的秒数以获得天数。$./countdown输入目标日期(例如,2021年3月18日)>2020年3月18日104天到2020年3月18日
