我将十进制数字存储在字符串中。
<100的数字以“045”
或“005”
的方式存储。
在诸如 let A="045"+"009"
之类的算术运算中使用这些数字字符串时,这些数字将被视为八进制数字,如手册页中所示。
为了将它们视为十进制,我在数字字符串的开头添加了 10#
,就像这样
let A="10#045"+"10#123"
但是这个解决方案会在 BusyBox(安装在 OpenWRT 上)的 bash 中导致错误 -ash: let: 算术语法错误
我的 busybox shell 有其他解决方案吗?
注意:该操作应使用 let
进行评估,因为我在其他类型的操作(如按位操作)中需要这些数字。
最佳答案
busybox
没有bash
,它的shell是ash
。
您可以去掉变量的前导零,例如:
while [ "${n:0:1}" = "0" ]; do n="${n#?}"; done
或使用expr
:
$ echo $(expr 045 + 045)
90
关于linux - 在busybox的ash下做算术时如何将八进制数视为十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16522600/