为什么我在bash中的日期差异导致负数?

时间:2014-06-08 05:07:42

标签: bash shell date sh difference

当我获得两个日期值并减去它们时,有时我得到一个负数:

start_time=$(date -u +%N)

#work

end_time=$(date -u +%N)
echo "execution time was $(expr $end_time - $start_time) s."

这些日期对象之间的工作是在SciDB中的两个数组之间进行操作(例如,两个100x100数组的相乘)。在不同情况下,此操作可能需要不到一秒的时间,这就是我使用纳秒的原因。 示例输出:

computer@place:~/some-scripts$ ./test_mult_100.sh
execution time was 273467147 s.
computer@place:~/some-scripts$ ./test_mult_100.sh
execution time was -735035957 s.

我正在通过PuTTY通过SSH在计算机上执行.sh脚本。对我来说真正奇怪的是,即使在执行中间操作3秒后,我也可以获得负数。我取消设置start_time和end_time变量以避免重叠值,但我不认为不这样做会导致问题。

1 个答案:

答案 0 :(得分:4)

%N是当前秒的纳秒数。

这不是自纪元以来的纳秒数。