为什么 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