为什么 bash 认为数字 010 = 8?
x=010
echo $x
010
echo $(( x+0 ))
8
echo $(( x-2 ))
6
Run Code Online (Sandbox Code Playgroud)
我认为它可能是二进制的,但 010 = 10 = 2。那么为什么它会得到 8,我如何让它认为 010 = 10(和 010 - 2 = 8)?
Pab*_*abi 42
以 a 开头的数列0
被解释为八进制数。
八进制10
= 十进制8
。
要让 bash 将其视为十进制数,请删除前导零或强制使用十进制数:
N=010
N=$((10#$N))
Run Code Online (Sandbox Code Playgroud)
通常适用于所有基础,只需将 替换为10
您想要的基础:
N=[base#]n
Run Code Online (Sandbox Code Playgroud)