1

我将十进制数字存储在字符串中。

< 100 的数字以这种方式存储"045"或存储"005"

在算术运算中使用这些数字字符串时,let A="045"+"009"这些数字被视为八进制数,如手册页中所示。

为了将它们视为十进制,我10#在数字字符串的开头添加了这样的

let A="10#045"+"10#123"

但是这个解决方案会导致-ash: let: arithmetic syntax error我的 BusyBox bash 出错(安装在 OpenWRT 上)

我的busybox shell还有其他解决方案吗?

注意:该操作应使用评估,let因为我需要在其他类型的操作(如按位操作)中使用这些数字。

4

2 回答 2

3

busybox没有bash,它的外壳是ash

您可以从变量中去除前导零,例如:

while [ "${n:0:1}" = "0" ]; do n="${n#?}"; done

或使用expr

$ echo $(expr 045 + 045)
90
于 2013-05-13T13:04:01.603 回答
0

您可以在进行算术之前删除零:

n=005
shopt -s extglob
n1=${n##+(0)}
echo $n1

输出:

5
于 2013-05-13T13:02:08.917 回答