为什么 bash 认为 010 是 8?

为什么 bash 认为 010 是 8?

为什么 bash 认为数字 010 = 8?

x=010
echo $x
  010
echo $(( x+0 ))
  8
echo $(( x-2 ))
  6

我认为它可能是二进制的,但 010 = 10 = 2。那么为什么它会得到 8,我怎样才能让它认为 010 = 10(和 010 - 2 = 8)?

答案1

以 a 开头的数字序列0被解释为八进制数。
八进制10= 十进制8

要让 bash 将其视为十进制数,请删除前导零或强制为十进制:

N=010
N=$((10#$N))

一般来说,这适用于所有基础,只需10用您想要的基础替换即可:

N=[base#]n

相关内容