我想在脚本中的某一点执行以下操作:
start_time=date
Run Code Online (Sandbox Code Playgroud)
这在一个或多个进程运行之后:
end_time=date
Run Code Online (Sandbox Code Playgroud)
然后这样做:
elapsed=$end_time-$start_time
echo "Total of $elapsed seconds elapsed for process"
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
Mia*_*ati 31
使用自纪元以来的时间轻松识别脚本中的时间跨度
man date
%s seconds since 1970-01-01 00:00:00 UTC
%N nanoseconds (000000000..999999999)
Run Code Online (Sandbox Code Playgroud)
.
start_time="$(date -u +%s)"
sleep 5
end_time="$(date -u +%s)"
elapsed="$(($end_time-$start_time))"
echo "Total of $elapsed seconds elapsed for process"
Total of 5 seconds elapsed for process
Run Code Online (Sandbox Code Playgroud)
Bash 不支持浮点数,所以你需要使用像 bc 这样的外部工具来比较时间 1475705058.042270582-1475705053.040524971
start_time="$(date -u +%s.%N)"
sleep 5
end_time="$(date -u +%s.%N)"
elapsed="$(bc <<<"$end_time-$start_time")"
echo "Total of $elapsed seconds elapsed for process"
Total of 5.001884264 seconds elapsed for process
Run Code Online (Sandbox Code Playgroud)
gle*_*man 26
bash 有一个内置的计时器变量
start=$SECONDS
# do stuff
end=$SECONDS
duration=$(( end - start ))
echo "stuff took $duration seconds to complete"
Run Code Online (Sandbox Code Playgroud)
@jasonwryan 已经建议了它,但我会将它作为答案,因为当我想为脚本计时时,它也是我的首选。要计时myscript只需使用:
time myscript
Run Code Online (Sandbox Code Playgroud)