0

我想使用 shell 脚本读取文件,这里想计算读取文件所需的时间。我创建了以下方法来获取文件读取开始和结束时的时间(以毫秒为单位),我将计算时间差,但它没有添加小时+分钟+秒并向我显示所需的数字输入。

方法

  getCurrentTimeInMili()
   {
    hourTime=$(($(date +%H)*3600))
    minuteTime=$(($(date +%m)*60))
    secondTime=$(date +%S)
    timeInMili= $(($hourTime + $minuteTime + $secondTime));
    return timeInMili
   }

错误 ./testshell.sh:第 17 行:返回:timeInMili:需要数字参数

4

2 回答 2

3

省略和之间的timeInMili=空格$

timeInMili= $(($hourTime + $minuteTime + $secondTime));
           ^
          This to

timeInMili=$(($hourTime + $minuteTime + $secondTime));
于 2012-05-24T15:34:41.417 回答
1

date多次调用意味着它们的返回值可能有点不同步——如果我们在第二个边界之前被调用,这可能会很糟糕。更好的是只调用一次 date 并检索所需的所有信息,如下所示:

getCurrentTimeInMili() {
  date +'%H 3600 * %M 60 * + %S + 1000 * %N 1000000 / + p' | dc
}

startTime=$(getCurrentTimeInMili)
sleep 5
endTime=$(getCurrentTimeInMili)

如果您不需要这么高的准确性,您可以简单地使用time内置,如:

time sleep 5
于 2012-05-24T15:45:39.397 回答