Linux 使用Bash计算并打印两个日期之间的差异?
我需要一些关于bash脚本的帮助 这是我必须应用脚本的日志(3000行,这是一个示例): 我们要求我打印作业X开始和作业X结束之间的时间间隔,如下所示:Linux 使用Bash计算并打印两个日期之间的差异?,linux,bash,Linux,Bash,我需要一些关于bash脚本的帮助 这是我必须应用脚本的日志(3000行,这是一个示例): 我们要求我打印作业X开始和作业X结束之间的时间间隔,如下所示: Job 1 time elapsed : 600 seconds Job 2 time elapsed : 788 seconds ....... 有人能帮我吗 非常感谢 我不知道您做了什么,但我给您留下了一个简单的shell脚本,您一定能够确定您需要什么 #!/bin/bash date1="2019 nov 30 19:11:37 Jo
Job 1 time elapsed : 600 seconds
Job 2 time elapsed : 788 seconds
.......
有人能帮我吗
非常感谢 我不知道您做了什么,但我给您留下了一个简单的shell脚本,您一定能够确定您需要什么
#!/bin/bash
date1="2019 nov 30 19:11:37 Job 1 started"
date2="2019 nov 30 20:11:37 Job 1 started"
sec1=$(echo $date1 | cut -d" " -f4)
sec2=$(echo $date2 | cut -d" " -f4)
diff=$(expr $(date -d $sec2 +%s) - $(date -d $sec1 +%s))
echo Job 1 time elapsed : $diff seconds
输出:
Job 1 time elapsed : 3600 seconds
到目前为止你试过什么?你被困在哪里了?gawk有内置的日期操作功能,coreutils有一个有效的日期操作工具(
date
),可以在bash脚本中使用。请显示相关代码并说明确切的问题或错误。仅仅描述是不够的。另请注意,如果这些时间戳在本地时间,并且您的本地时区遵守DST,则您无法可靠地完成您想要做的事情。当他从DST转换到标准时间时,你会得到错误的结果。您需要在时间戳中包含偏移量(例如-0500
),以避免出现问题job 3expr$(date-d 00:59:30+%s)-(date-d 22:12:06+%s)
,这已经很奇怪了,运行3天的作业将很困难。真的!您只需更改date-d即可获取更多信息,Bash内置了整数算法。除非您需要支持遗留sh
,否则您基本上不需要expr
。另外,还有一些好的提示!谢谢,只是出于好奇,使用expr不是更好吗?因为它在不同的shell之间更便于携带?
Job 1 time elapsed : 3600 seconds