¿Por qué bash piensa que 010 es 8?

17

¿Por qué bash piensa que el número 010 = 8?

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

Pensé que podría ser binario, pero 010 = 10 = 2. Entonces, ¿por qué obtiene 8 y cómo puedo hacer que piense que 010 = 10 (y 010 - 2 = 8)?

    
pregunta Tim 09.05.2015 - 13:17

1 respuesta

42

Las secuencias numéricas que comienzan con 0 se interpretan como números octales.
Octal 10 = decimal 8 .

Para que bash lo trate como un número decimal, elimine el cero inicial o fuerce el decimal con:

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

En general, eso funciona para todas las bases, solo reemplaza el 10 con la base que quieras:

N=[base#]n
    
respondido por el Pabi 09.05.2015 - 13:19

Lea otras preguntas en las etiquetas