Bash 12 - 08 Valor muito bom para a base (token de erro “08”)

2

Estou tentando calcular 12-08 (não 12-8 ) e obtenho o seguinte erro:

let: 08: value too great for base (error token is "08")

Este é o código de amostra:

first=12
second=08
if [[ ($first > $second) ]]; then
    let fin=first-second
else
    let fin=second-first
fi

P.S Desculpe pelos espaçamentos

    
por EmberSpirit 09.05.2016 / 13:03

1 resposta

7

Se você preceder um número por 0 , bash tratará o número como octal. Como octal é base 8 com dígitos variando de 0 a 7, 08 está fora do intervalo para octal.

Agora você tem duas opções para fazer o cálculo decimal:

  • Omitir o 0 anterior:

     
    $ echo $(( 12 - 8 )) 
    4
    
  • Mencione explicitamente a base como decimal por 10# :

     
    $ echo $(( 12 - 10#08 )) 
    4
    
por heemayl 09.05.2016 / 13:11