shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] bash: 08: valor muito grande para esta base de numera


From: Alfredo Casanova
Subject: Re: [shell-script] bash: 08: valor muito grande para esta base de numeração (error token is "08")
Date: Tue, 11 Aug 2015 13:50:22 +0000

Tem outra opção pra remover os zeros a esquerda:

$ echo $var
0008
$ shopt -s extglob #ativa o extended globbing
$ echo ${var##+(0)}
8
$ shopt -u extglob




On Tue, Aug 11, 2015 at 4:26 AM Tiago Peczenyj address@hidden [shell-script] <address@hidden> wrote:
 

Ja mencionaram o Octal. 


O q nao parece obvio é que este problema aparece em muitos lugares. A convenção de usar 0 na frente de octal e 0x na frente de hexa foi popularizada pelo C (tem 0b pra binario em alguns casos) e ainda hoje tem os seus usos (chmod é um caso).

Entretanto os problemas com 08 e 09 geralmente surgem quando vc le uma entrada de dados e não valida corretamente -ou tem uma mascara. Como pedir uma data e tentar interpretar como numero. O melhor nesses casos é adicionar isso aos seus testes.

Se o seu programa nao pode falhar, seja paranoico nas validaçoes e conversoes. Como forçar a base 10 nos numeros lidos.


Em segunda-feira, 10 de agosto de 2015, Alfredo Casanova address@hidden [shell-script] <address@hidden> escreveu:
 

Pode usar a conversão de bases do proprio shell:

$ var=08
$ echo $var
08
$ echo $((10#$var))
8


On Mon, Aug 10, 2015 at 10:52 AM Paulo Bettega address@hidden [shell-script] <address@hidden> wrote:
 

Valeu a explicação. O awk também faz a mesma coisa
awk 'BEGIN {print 010+90}'
98



On 10-08-2015 10:48, Arkanon address@hidden [shell-script] wrote:
> Em 10 de agosto de 2015 10:39, Paulo Bettega address@hidden

> <mailto:address@hidden> [shell-script] <address@hidden
> <mailto:address@hidden>> escreveu:
>
> __


> Olá Arkanon, valeu os links. Sempre achei que esse problema só aparecesse
>
> somando 1+08 ou 1+09 por exemplo, e de 1+01 a 07 soma sem erro.
> Mas no link tem esse:
>
> echo $((10+090))
> bash: 10+090: valor muito grande para esta base de numeração (error token is "090")
>
> tirando o zero da frente dá certo
> echo $((10+90))
> 100
>
> mas e essa? 010 mais 90 dá quanto?
> echo $((010+90))
> 98
> será possível que o bash somou 010 binário com 90 decimal? rs
>
> Essa dúvida está indiretamente respondida no segundo link, que explora mais o uso de bases
> numéricas no bash :)
> O que aconteceu aí é que o bash somou 010 em octal (base indicada implicitamente pelo 0 inicial) com
> 90 em decimal (base default) e mostrou o resultado em decimal.
> Explicitamente, a operação acima seria escrita
> $ echo $((8#10+10#90))
> 98
>
> Uso mais o bc e agora awk e ksh como calculadoras, já que o bc não faz
> potência de expoente fracionário (achei uma dica no LQ pra fazer isso,
> mas com awk e ksh é mais direto).
>
> Responder através da web

> <https://br.groups.yahoo.com/neo/groups/shell-script/conversations/messages/38810;_ylc=X3oDMTJxZnAwcXYxBF9TAzk3NDkwNDM3BGdycElkAzE5NDEzMTIEZ3Jwc3BJZAMyMTM3MTExMjU0BG1zZ0lkAzM4ODEwBHNlYwNmdHIEc2xrA3JwbHkEc3RpbWUDMTQzOTIxMzkyNQ--?act=reply&messageNum=38810>
> •
> <mailto:address@hidden?subject=Res%3A%20Re%3A%20%5Bshell-script%5D%20bash%3A%2008%3A%20valor%20muito%20grande%20para%20esta%20base%20de%20numera%C3%A7%C3%A3o%20%28error%20token%20is%20%2208%22%29>
>
> • através de email
> <mailto:address@hidden?subject=Res%3A%20Re%3A%20%5Bshell-script%5D%20bash%3A%2008%3A%20valor%20muito%20grande%20para%20esta%20base%20de%20numera%C3%A7%C3%A3o%20%28error%20token%20is%20%2208%22%29>
> • Adicionar um novo tópico
> <https://br.groups.yahoo.com/neo/groups/shell-script/conversations/newtopic;_ylc=X3oDMTJlYW8zMnN2BF9TAzk3NDkwNDM3BGdycElkAzE5NDEzMTIEZ3Jwc3BJZAMyMTM3MTExMjU0BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTQzOTIxMzkyNQ-->
> • Mensagens neste tópico
> <https://br.groups.yahoo.com/neo/groups/shell-script/conversations/topics/38808;_ylc=X3oDMTM2amVkY3RxBF9TAzk3NDkwNDM3BGdycElkAzE5NDEzMTIEZ3Jwc3BJZAMyMTM3MTExMjU0BG1zZ0lkAzM4ODEwBHNlYwNmdHIEc2xrA3Z0cGMEc3RpbWUDMTQzOTIxMzkyNQR0cGNJZAMzODgwOA-->
> (3)
>
> .
> --


> (o_ @arkanon <http://twitter.com/arkanon> (Twitter) __o
> //\ address@hidden <mailto:address@hidden> _`\<,
> V_/_ www.lsd.org.br <http://www.lsd.org.br/> (_)/(_)
> ---------------------------------
>
>
> ----------------------------------------------------------
> Enviado por: Arkanon <address@hidden>



--

Tiago B. Peczenyj

http://about.me/peczenyj


reply via email to

[Prev in Thread] Current Thread [Next in Thread]