有人可以向我解释为什么一个以 0 开头的数字会产生这种有趣的行为吗?
#!/bin/bash
NUM=016
SUM=$((NUM + 1))
echo "$NUM + 1 = $SUM"
将打印:
016 + 1 = 15
答案1
误解是这些数字并不代表您的期望。
前导零表示以 8 为基数的数字。 Ie016
与 相同8#16
。如果你想保留前导零,那么你需要10#016
.
> num=016
> echo $((num))
14
> echo $((10#$num))
16
答案2
因为:
~$ echo $((NUM))
14
如果数字以0开头,则认为是八进制值,八进制中的16等于十进制中的14。