Linux shell脚本日期算术

3
我有一个shell脚本。
 #!/bin/bash
START=$(date +%s)
echo "  Start| $START "
# do something
# start your script work here
#  
# your logic ends here
END=$(date +%s)
echo "  End|  $END "
DIFF=$(( $END-$START ))
echo "  Diff in seconds|"  $DIFF

仍然出现这个错误 开始时间| 1349769151 结束时间| 1349769151 ")49769151rror:无效算术运算符(错误标记为“

我知道这很基础,所以我已经搜索和调试了两天。 但是还是得不到任何有效的解决办法。 请帮帮我!

2个回答

3

START和END不是日期格式,无法相减。如果您只想测量执行时间,请仅使用%s,它将给您以秒为单位的差异。

START=$(date +%s)
echo "  Start| $START "
# do something
# start your script work here
#  
# your logic ends here
END=$(date +%s)
echo "  End|  $END "
DIFF=$(( $END-$START ))
echo "Diff in seconds:" $DIFF

嗨,KingsIndian,我按照你展示的方式修改了我的代码。但仍然出现一些错误。请帮忙! - user452187
你遇到了什么错误?对我来说它运行得很好。你能检查一下你是否有相同的代码吗? - P.P
仍然收到此错误 开始| 1349769151 结束| 1349769151 ")49769151rror: invalid arithmetic operator (error token is " - user452187
这部分没有错误,在你的 do something 部分有一些错误。请检查在计算时间之间你所拥有的代码。 - P.P
如果没有其他代码,那么它应该能够无误运行。使用sleep 5来观察一些差异。 - P.P

2
你正在尝试使用字符串进行算术运算:这是不可行的。
我建议你使用date "+%s"将日期打印为时间戳,然后使用这些数字进行数学计算。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接