date命令在bash shell脚本中
在工作中,所有的日子配置文件都会生成新的并附加 会话编号。 公司上市上Feb 16
,而86400
是秒 在一天内。该会话数量减去公司从seconds_since_last_day开始 天和加入产生零点几的date命令在bash shell脚本中
这才是关键与天CONFIG文件交互。我得到这个 - 但我不知道 了解
date -ud "$distance days ago 00:00:00"
。
这是自1970年以来的秒数吗?
if $session; then
# return the session of the last day
seconds_since_day_one=`date -ud "Feb 16 2002" +"%s"`
seconds_since_last_day=`date -ud "$distance days ago 00:00:00" +"%s"`
days_between=`printf "%010d" $(((seconds_since_last_day - seconds_since_day_one)/86400))`
# Truncate on the left to 9 bytes to leave room
# to append the engine suffix for your environment
echo $days_between | awk '{l=length($1); print substr($1, (l-8), l)}'
选项-d到date
提供了一个通用字符串来获取日期。
因此,例如,date -d yesterday
将打印昨天的日期,并且date -d 'yesterday 12:00 AM'
将打印昨天的日期,时间设置为12:00 AM。因此,date -d 6 days ago 00:00:00
将打印6天前的日期,时间设置为00:00:00。我希望它能回答你的问题。
格式+“%s”告诉date
打印1970年代替日期的秒数。
date -ud "$distance days ago 00:00:00"
本身只是以一种非常可读的格式打印日期,但是当您添加FORMAT字符串来控制输出+"%s"
确实意味着所谓的Unix时间中的数字(从1970-01-01 00:00:00 UTC)。
如果变量$distance
设置为一个数字,它将显示日期前几天的日期,如果其设置为0,则表示今天,1表示昨天,2表示前一天,等等。为了更好地理解这些格式和相关的关键字,GNU coreutils软件包中还有相当好的文档(在其他地方)。
检查以下网址:
http://www.gnu.org/software/coreutils/manual/html_node/Relative-items-in-date-strings.html#Relative-items-in-date-strings
http://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html
http://www.gnu.org/software/coreutils/manual/html_node/date-invocation.html#date-invocation
Unix时间的维基百科的解释:
http://en.wikipedia.org/wiki/Unix_time
mktime和AWK的strftime可用于获取的时间日期。 http://www.gnu.org/software/gawk/manual/html_node/Time-Functions.html
例如,的strftime( “%A”,mktime( “年月日00 00 00”)) 应该给你的那一天。
if'date -d 6 days ago' will print the date from six days ago,and'date -ud“$ distance days ago 00:00:00”'= Sun Jan 8 00:00:00 UTC 2012(昨天的日期)和'日期-ud“$ distance days 00:00:00”+“%s”会给我 - 1325980800 $ distance的值是多少?因为我没有看到$距离有任何价值。这个shell脚本给了我正确的会话。 – capser 2012-01-09 23:24:21
是$ distance null? – capser 2012-01-09 23:25:20
因为如果距离为空,我认为它会打破日期命令,但它似乎没有破坏任何东西。 – capser 2012-01-09 23:26:30