linux - 在busybox的ash下做算术时如何将八进制数视为十进制数

标签 linux shell busybox openwrt ash

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

<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/

相关文章:

linux - 我可以核心转储一个阻塞磁盘事件的进程(最好不要杀死它)吗?

node.js - 为什么我在运行 npm install 时在 bcrypt 中出现错误 404?

c - 迷你 shell 背景

linux - 为什么在 bash 脚本中第二次使用 "$?"时赋值语句不起作用

linux - Shell:在带有换行符的变量上使用 grep

linux - 防止覆盖 char 驱动程序 linux 的 WRITE 函数

linux - 无法连接到tomcat服务器

java - 通过 JSP/Servlet 中的 shell 脚本运行 java 应用程序

linux - 如何为busybox中的每个小程序构建ELF文件?

用于嵌入式系统的 Linux | NiosII