如何在bash脚本中获取经过的时间(以毫秒为单位)?

时间:2010-12-16 01:06:16

标签: bash shell time

我尝试使用t1=$(date +%s%N)来获取以纳秒为单位的时间,但我一直在收到此错误:

./script.sh: line 10: 1292460931N: value too great for base (error token is "1292460931N")

我在线查看,似乎你可以使用“time”命令,但是我找不到使用time命令的好例子。任何帮助将不胜感激:)

2 个答案:

答案 0 :(得分:5)

您使用的date命令不支持%N,因此您的输出字面为1292460931N。我在Linux上试过它并且它有效,但在FreeBSD上我看到你得到的结果。在shell中运行该date命令,看看是什么。你有可能使用busybox吗?它的截止日期命令也省略了%N,但我刚试过的版本给了我1292463535%N

答案 1 :(得分:2)

好的,这里有几件事。

首先,不是很多系统都能给你一个实际精确到纳秒的时间。

现在,使用时间,/usr/bin/time或shell内置(bash:help time)非常简单。如果您想要的时间是foo1,那么

$ time foo

将在stderr上将经过的时间作为三行返回

real 0m0.001s
user 0m0.000s
sys  0m0.000s

你可以用任何你喜欢的方式。

如果您想获得更好,更准确的时序,请多次执行该命令。这可以像编写短循环一样简单

time for i in 0 1 2 3 4; do foo; done

将执行foo五次并给你总时间。你可能想要做5次以上的迭代,所以你可能想要一个计数器和一个while循环等。