Por que o bash acha que 010 é 8?

17

Por que o bash pensa o número 010 = 8?

x=010
echo $x
  010
echo $(( x+0 ))
  8
echo $(( x-2 ))
  6

Eu pensei que poderia ser binário, mas 010 = 10 = 2. Então por que ele tem 8, e como posso fazer com que ele pense em 010 = 10 (e 010 - 2 = 8)?

    
por Tim 09.05.2015 / 15:17

1 resposta

42

Sequências numéricas que começam com 0 são interpretadas como números octais.
Octal 10 = decimal 8 .

Para obter o bash para tratá-lo como um número decimal, remova o zero à esquerda ou force o decimal com:

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

Geralmente isso funciona para todas as bases, basta substituir o 10 pela base que você deseja:

N=[base#]n
    
por Pabi 09.05.2015 / 15:19

Tags