Почему bash думает, что 010 равно 8?

17

Почему 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)?

    
задан Tim 09.05.2015 в 13:17
источник

1 ответ

42

Числовые последовательности, начинающиеся с 0 , интерпретируются как восьмеричные числа. Octal 10 = decimal 8 .

Чтобы получить bash, чтобы рассматривать его как десятичное число, удалите начальный нуль или нажмите десятичное значение с помощью:

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

Как правило, это работает для всех баз, просто замените 10 базой, которую вы хотите:

N=[base#]n
    
ответ дан Pabi 09.05.2015 в 13:19
источник