【发布时间】:2021-01-22 23:50:16
【问题描述】:
在运行我的 bash 脚本的这一部分时出现错误
脚本
value=0
for (( t=0; t <= 4; t++ ))
do
d1=${filedates[$t]}
d2=${filedates[$t+1]}
((diff_sec=d2-d1))
SEC=$diff_sec
compare=$((${SEC}/(60*60*24)))
value=$((value+compare))
done
输出
jad.sh: line 28: ((: 10#2014-01-09: value too great for base (error token is "09")
jad.sh: line 30: /(60*60*24): syntax error: operand expected (error token is "/(60*60*24)")
d1 和 d2 是 2014-01-09 和 2014-01-10 格式的日期
请问有什么解决办法吗?
【问题讨论】:
-
您不能只减去 YYYY-MM-DD 形式的日期。您必须先将它们转换为纯数字,例如 time_t 时间戳(这将使您获得秒数)。
-
看起来它正在将您的 09 转换为八进制表示法,因此它实际上可能是在尝试计算
2014 - 1 - 9,但由于09不是有效数字(前面的 0 表示使用八进制代替十进制)它在抱怨。 -
robbirt有什么解决办法?
标签: bash