bashshell脚本中的date命令
在工作中,所有天的配置文件都是新生成的,并附有 会话号。公司于2月16日上市,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
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'
进行了测试,如果为空,则默认为昨天。