Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bashshell脚本中的date命令_Bash_Date - Fatal编程技术网

bashshell脚本中的date命令

bashshell脚本中的date命令,bash,date,Bash,Date,在工作中,所有天的配置文件都是新生成的,并附有 会话号。公司于2月16日上市,86400是秒 一天之内。会话号是通过减去公司开始时间生成的 从上一天起的秒数算起的天,再加上几个零 这是与days配置文件交互的关键。我明白了,但我不明白 了解 date-ud“$distance days ago 00:00:00” 这是1970年以来的秒数吗 if $session; then # return the session of the last day seconds

在工作中,所有天的配置文件都是新生成的,并附有 会话号。公司于2月16日上市,
86400
秒 一天之内会话号是通过减去公司开始时间生成的 从上一天起的秒数算起的天,再加上几个零

这是与days配置文件交互的关键。我明白了,但我不明白 了解

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 to
date
提供了获取日期的通用字符串

因此,例如,
date-d dayed
将打印昨天的日期,
date-d'dayed 12:00 AM'
将打印昨天的日期,时间设置为12:00 AM

因此,
date-d 6天前00:00:00
将打印6天前的日期,时间设置为00:00:00。我希望它能回答你的问题

格式+%s“告诉
date
打印从1970年开始的秒数,而不是日期。

date-ud“$distance days ago 00:00:00”
本身只是以可读的格式打印几天前的日期,但是当您添加格式字符串以控制输出时
+%s”
确实指的是所谓的Unix时间(自1970-01-01 00:00:00 UTC以来的秒数)

如果变量
$distance
被设置为一个数字,它将显示数天前的日期,如果设置为0,则表示今天,1表示昨天,2表示前天,依此类推。为了更好地理解这些格式和相关关键字,GNU coreutils包(以及其他地方)中有相当好的文档

检查这些URL:


维基百科对Unix时间的解释:

awk中的mktime和strftime可用于获取时间日期。

例如,strftime(“%A”,mktime(“YYYY-MM-DD-00”))
如果
date-d 6天前
将打印六天前的日期,
date-ud“$distance days ago 00:00:00”
=Sun Jan 8 00:00:00 UTC 2012(昨天的日期)和'date-ud“$distance days ago 00:00:00”+%s”将给我-1325980800美元distance的值是多少?因为我不认为$distance有任何价值。这个shell脚本为我提供了正确的会话。因为如果distance为null,我以为它会破坏date命令,但它似乎没有破坏任何东西。我忘记了脚本末尾的“fi”。如果$distance是空字符串,它默认为昨天(1天前),如果它设置为0,则表示“今天”。没错,我刚刚用
date-ud'days ago'
进行了测试,如果为空,则默认为昨天。