用于计算已用时间的 Bash 脚本

新手上路,请多包涵

我正在用 bash 编写脚本来计算执行命令所用的时间,请考虑:

 STARTTIME=$(date +%s)
#command block that takes time to complete...
#........
ENDTIME=$(date +%s)
echo "It takes $($ENDTIME - $STARTTIME) seconds to complete this task..."

我想我的逻辑是正确的,但我最终得到以下打印输出:

“完成这项任务需要几秒钟的时间……”

我的字符串评估有什么问题吗?

我相信 bash 变量是无类型的,如果 bash 中有一个“字符串到整数”的方法,我会很高兴。

原文由 Michael Mao 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 653
2 个回答

$(())$[] 将用于计算算术运算的结果。您正在使用 $() 它只是将字符串作为命令进行评估。这是一个微妙的区别。希望这可以帮助。

正如 tink 在对此答案的评论中指出的那样, $[] 已被弃用,而 $(()) 应该受到青睐。

原文由 OmnipotentEntity 发布,翻译遵循 CC BY-SA 3.0 许可协议

我发现使用内部变量“$SECONDS”非常干净

SECONDS=0 ; sleep 10 ; echo $SECONDS

原文由 Lon Kaut 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题