C shell用大数字进行算术运算

时间:2012-10-11 23:31:29

标签: shell unix csh

首先:抱歉使用c shell,怪我的公司不是我。我讨厌这个该死的东西,就像你现在大多数人一样(起初我就像,嘿,这不是那么糟糕)。

我试图减去从时间戳中获得的大数字。这是我正在尝试的:

set curTime = `date +%s%N`
#... some stuff
@curTime = `date +%s%N` - $curTime #get the diff
echo "time taken: $curTime"

但是我觉得这些数字太大了 - 在我尝试了几秒钟之前它运行良好。这是我在日志中看到的内容:

@curMilli = 1349996279792995000 - 1349996279170458000
@curMilli: Command not found.

正如我所说,我对date +%s做了同样的事情并且它没问题,所以我假设这是关于数字的大小。

我该怎么做?非常感谢。

1 个答案:

答案 0 :(得分:1)

文章http://en.wikipedia.org/wiki/Bc_programming_language有一个简短的部分“在shell脚本中使用bc”。测试:

set curTime = `/bin/date +%s%N`
/bin/sleep 2
set prevTime = $curTime
set curTime = `/bin/date +%s%N`
set diff = `echo "$curTime - $prevTime;" | /usr/bin/bc`
echo $diff

将给出(带有初始20变量之后的数字):

2016204108

P.s:我希望我可以为"I hate the damn thing as much as most of you do now (at first I was like, hey this ain't so bad)."

两次投票