shell - 有没有一种简单的方法可以让 POSIX shell 将带有前导零的数字解释为十进制?

标签 shell arithmetic-expressions

在 POSIX shell 脚本中,我想在字符串操作和使用 $(( ... ))< 的简单计算中使用由 seq -w 生成的十进制数字。这是因为带有前导零的数字被解释为八进制数。我想出了这样的方法来实际获取十进制数......

for n in $(seq -w 0 300); do
    str="xxx $n"
    dec=$(echo $n | sed -e 's,00*\(..*\)$,\1,')
    ...
done

...但我想知道是否有更简单/更明显的方法来做到这一点。

最佳答案

使用 expr 代替。例如代替

for n in $(seq -w 0 10); do echo $n $((n + 4)); done

使用这个:

for n in $(seq -w 0 10); do echo $n $(expr $n + 4); done

关于shell - 有没有一种简单的方法可以让 POSIX shell 将带有前导零的数字解释为十进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21912089/

相关文章:

bash - 如何在包含的 shell 脚本中查找脚本目录

batch-file - 从多个 TXT 文件中删除标题行的命令行脚本

shell - 在带有包含路径的变量的 shell 脚本中使用 cd 命令在 Windows 10 主机的 CentOS virtualbox 环境中不起作用

validation - 用于指定值约束的通用语言

c# - C# 中有指数运算符吗?

linux - 查找文件并在同一目录中进行备份

linux - 从 shell 脚本中的每一行中获取前 5 个字符

c - C中的算术运算

java - 如何在运行时获取算术运算符?

batch-file - 在 Batch 中使用变量在循环中执行算术运算