掰着指头数日子在Linux中使用bash

需要知道在一些重要的事情发生之前还有多少天吗?让Linux bash和date命令来帮助解决这个问题吧!

肖像历史

随着指日可待了一些非常重要的节日,你可能需要提醒你有多少时间去准备。

幸运的是,你可以得到很多帮助日期命令。在这篇文章中,我们将探讨这些方法日期bash脚本可以告诉您,从今天到您预期的某个事件之间有多少天。

这是如何首先一对夫妇的提示,是去工作。该日期命令的引用%j选项是要告诉你今天的日期为1和366 1月1日之间的一个数字,如你所期望,将显示为1和12月31日将是365或366取决于它的闰年。继续尝试。您应该看到这样的事情:

$ date +% j339

你可以,但是,得到日期命令为您提供年月日的编号任何以a提供日期日期命令如下:

$日期-D “03月18日” +引用%j 077

要记住的一件重要事情是,这个命令将在今年即使那个日子已经过去了。然而,你可以增加一年的命令和修复:

$ date -d "Apr 29" +%j 119 $ date -d "Apr 29 2020" +%j 120

在闰年,4月29日将是一年中的第120天,而不是第119天。

如果你想倒数到圣诞节的日子,又不想在日历上留下指纹,你可以使用这样的脚本:

# !/bin/sh圣诞节= ' date -d "Dec 25" +%j ' TODAY= ' date +%j ' DAYS=$(($XMAS - $TODAY))圣诞快乐!”;;[0-9]*) echo "$DAYS DAYS remaining";;-[0-9]*) echo "Oops, you missed it";;esac

在这个脚本中,我们得到12月25日和今天的日期,然后从另一个中减去一个。如果结果为正数,则显示剩余天数。如果是零,我们发出“圣诞快乐”消息,如果是负数,我们就告诉运行脚本的人他们错过了节日。也许他们被蛋酒冲昏了头脑。

case语句由ready-to-print语句组成,用于剩余天数计数等于0、包含任何数字和以a开头的计数-(即迹象。,in the past).

同样的想法也适用于任何人想要关注的任何日期。实际上,我们可以要求运行脚本的人提供日期,然后让他们知道从现在到那时还有几天。这个版本的脚本就是这样做的。

# !/bin/sh echo -n "Enter event date (e.g., June 6): " read dt EVENT=`date -d "$dt" +%j` TODAY=`date +%j` DAYS=`expr $EVENT - $TODAY` case $DAYS in 0) echo "It's today!";; [0-9]*) echo "$DAYS days remaining";; -[0-9]*) echo "Oops, you missed it";; esac

这个脚本的一个问题是,如果运行它的人希望知道在他们到达下一年的一个特殊日子之前必须经过多少天,他们将会失望。即使在输入日期时提供年份,date -d命令仍然只提供当年的日期编号,而不是现在到那时之间的天数。

计算从今天到几年后的天数可能有点棘手。你需要包括所有中间年份,并注意那些闰年。

使用Unix (Epoch)时间

计算从现在到某个特殊日期之间的天数的另一种方法是利用Unix系统存储日期的方式。如果您将从1970年1月1日开始的秒数转换为天,您可以很容易地执行以下脚本中的操作:

# !/bin/bash echo -n "Enter target date (e.g., Mar 18 2021)> " read target_date today=`echo $(($(date --utc --date "$1" +%s)/86400))` target=`echo $(($(date --utc --date "$target_date" +%s)/86400))` days=`expr $target - $today` echo "$days days until $target_date"

解释一下,86400是一天中的秒数。用从纪元开始算起的秒数除以这个数,就得到天数。

$ ./countdown输入目标日期(例如,2021年3月18日)> 2020年3月18日104天直到2020年3月18日
加入网络世界社区有个足球雷竞技app脸谱网LinkedIn对那些顶级心态的话题发表评论。
相关:

版权©2019Raybet2

工资调查:结果在