我在 bash 中有两个时间变量。我正在尝试找到一种方法来获取两者之间的时间差。
是的,我在网上读过很多很多例子,但他们似乎没有一个“简单”的解决方案。相反,Bash 中的时间算术似乎是“事后的想法”。
以下是我读过的一些链接: 链接1
看起来好像没有“优雅”的解决方案(我的意见)。
所以我的变量如下:
TIME_START="date +%H:%M:%S //Start of script
// The script
TIME_END="date +%H:%M:%S //End of script
所以我想获取经过的时间。该脚本最多可能需要 3 小时才能执行(与传感器和硬件等交互)。该TIME_START
变量被插入到 MySQL 中,然后由 Bash 检索(当脚本结束时),以便进行“经过的时间”计算。
我在某处读到以下代码可以工作,但没有:
diff=$(expr $TIME_END - $TIME_START)
echo $diff
有任何想法吗?
谢谢
丹尼
答案1
date +%s
除了自己计算脚本的持续时间(最好使用Roman 指出的返回值)之外,您还有其他一些选择。
有一个命令叫做time
.您可以执行time some-script.sh
,它会打印脚本最后运行所花费的时间。请参阅手册页。
您也可以$SECONDS
在 bash 脚本中使用。它将保存自进程启动以来的秒数。所以你可以echo It took $SECONDS
在脚本的末尾左右。搜索$SECONDS
在bash 手册页。
times
bash 中也有内置的。它打印的信息类似于time
shell 本身(执行它的进程),而不是它所传递的任何命令(它实际上不带参数)。再次看到男人狂欢。
编辑:您的第二个链接实际上提供了一个看起来与您尝试的非常相似的解决方案,并且它还使用提到的 +%s 格式字符串 Roman。
答案2
您可以使用date +%s
-- 它存储自 1970-01-01 00:00:00 UTC 以来的秒数