shell 数学计算报错 value too great for base

创建日期: 2023-02-12 11:21 | 作者: 风波 | 浏览次数: 13 | 分类: shell

在使用 $[ ] 把时分秒转换为整数的时候,报错,报错信息:

09:value too great for base (error token is "09")

原因是 shell 把以数字 0 开头的数字以为不是10进制的数字,而是以为是其它进制,所以需要指定进制:

在每个数字前面加上 10# 来指定进制:

_intsec="1:32:09"
for timeblock in $(echo "${_intsec}" | sed 's/:/ /g') ; do
    _filesec=$[ 10#${_filesec} * 10#60 + 10#${timeblock} ]
done

参考:https://blog.csdn.net/sunlei1980/article/details/46799407

13 浏览
0 评论