有人可以向我解释为什么带有前导 0 的数字会产生这种有趣的行为吗?
#!/bin/bash
NUM=016
SUM=$((NUM + 1))
echo "$NUM + 1 = $SUM"
Run Code Online (Sandbox Code Playgroud)
将打印:
016 + 1 = 15
Hau*_*ing 128
误解是数字并不意味着您的期望。
前导零表示以 8016为底的数字。即与 相同8#16。如果您想保留前导零,那么您需要10#016.
> num=016
> echo $((num))
14
> echo $((10#$num))
16
Run Code Online (Sandbox Code Playgroud)
fre*_*ini 42
因为:
~$ echo $((NUM))
14
Run Code Online (Sandbox Code Playgroud)
如果数字以 0 开头,则认为它是八进制值,八进制中的 16 是十进制中的 14。