我将十进制数字存储在字符串中。
<"045"
或"005"
以这种方式存储。>
在let A="045"+"009"
等算术运算中使用这些数字字符串时,这些数字被视为八进制数,如手册页所示。
为了将它们视为小数,我在数字字符串的开头添加了10#
,如下所示
let A="10#045"+"10#123"
,但这个解决方案导致错误-ash: let: arithmetic syntax error
在我的bash从BusyBox(安装在OpenWRT上)
是否有另一个解决方案为我的busybox外壳?
注意:该操作应该用let
求值,因为我在其他类型的操作中需要这些数字,如按位操作
busybox
没有bash
,它的shell是ash
。
你可以去掉变量的前导零,例如:
while [ "${n:0:1}" = "0" ]; do n="${n#?}"; done
或使用expr
:
$ echo $(expr 045 + 045)
90
你可以在做算术之前去掉0:
n=005
shopt -s extglob
n1=${n##+(0)}
echo $n1
输出:5