基数值太大(错误标记为"09")

 悶得咪_438 发布于 2023-02-04 16:12

运行我的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中的日期

有解决方案吗?

2 个回答
  • 将字符串"10#"添加到变量的前面.这迫使bash将它们视为十进制,即使前导零通常会使它们成为八进制.

    2023-02-04 16:14 回答
  • 什么是d1d2?他们是约会还是秒?

    通常,如果您尝试使用包含零前缀的数字(例如09)进行算术运算,则会发生此错误.

    例:

    $ echo $((09+1))
    -bash: 09: value too great for base (error token is "09")
    

    为了使用带有0前缀的数字执行算术,您需要通过指定来告诉bash使用base-10 10#:

    $ echo $((10#09+1))
    10
    

    2023-02-04 16:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有