Problema com operações matemáticas em Shell  [INACTIVE]

Topics Programming. Not necessarily about the BrazilFW!

Problema com operações matemáticas em Shell

Mensagempor daniel.uramg » Seg Jul 11, 2011 12:51 pm

tenho um script de um programinha que fiz em SH que trabalha com data, e chega em 2 dias do mes que ele da pau
echo $((01+1)) = 2
echo $((02+1)) = 3
echo $((03+1)) = 4
...
...
echo $((08+1)) = -sh: Syntax error: 08+1
echo $((09+1)) = -sh: Syntax error: 09+1
echo $((10+1)) = 11

consegui contornar este erro com uma linha a mais no script, mas fiquei encucado com este problema, alguem sabe o porque so da erro com "08" e "09"??
Avatar do usuário
daniel.uramg
BFW Beneméritos
 
Mensagens: 1426
Registrado em: Qua Mai 20, 2009 4:42 pm
Localização: Taguatinga - DF
BrazilFW Box: Athlon XP 2400+ 1Gb RAM HD 20Gb
BFW 2.31.10+SP1, Squid, DNS Cache, EasyCaptive, MySAR, Apache, SCA, SqStat, EasyBackup. Bandwidth, Pure-FTP

Re: Problema com operações matemáticas em Shell

Mensagempor woshman » Seg Jul 11, 2011 1:06 pm

Código: Selecionar todos
soma() {
echo "$1 $2" | awk '{print $1+$2}'
}

soma 08 1


ps: o erro echo $((08+1)) é no busybox.
Contribua para que o Projeto BFW permaneça no ar, Doe Click aqui
Avatar do usuário
woshman
BFW Maintainer Version 3.x
BFW Manager
BFW Beneméritos
BFW 3.x Update
BFW Add-on Developer
BFW Developer
 
Mensagens: 1479
Registrado em: Ter Abr 04, 2006 2:25 pm
Localização: Indaiatuba - SP
BrazilFW Box:

Re: Problema com operações matemáticas em Shell

Mensagempor daniel.uramg » Seg Jul 11, 2011 1:16 pm

hum com awk deu serto
somente
Código: Selecionar todos
echo | awk '{print 08+1}'

ja faz o que preciso, so queria mesmo entender porque desse erro com o comando anterior

obrigado Woshman
Avatar do usuário
daniel.uramg
BFW Beneméritos
 
Mensagens: 1426
Registrado em: Qua Mai 20, 2009 4:42 pm
Localização: Taguatinga - DF
BrazilFW Box: Athlon XP 2400+ 1Gb RAM HD 20Gb
BFW 2.31.10+SP1, Squid, DNS Cache, EasyCaptive, MySAR, Apache, SCA, SqStat, EasyBackup. Bandwidth, Pure-FTP

Re: Problema com operações matemáticas em Shell

Mensagempor br_lemes » Qui Jul 28, 2011 4:43 pm

Em C, números precedidos de 0 estão em base octal (somente 0 a 7). Em shell nunca soube disso, mas deve ser o mesmo, porque echo $((8+1)) funciona perfeitamente.

Note que echo $((010+1)) resulta 9 (010 é o próximo número octal depois de 07, mas o resultado vem em base decimal).
Se você tem uma maçã e eu tenho outra; e nós trocamos as maçãs, então cada um terá sua maçã. Mas se você tem uma ideia e eu tenho outra, e nós as trocamos; então cada um terá duas ideias.

http://www.br-lemes.net/
Avatar do usuário
br_lemes
BFW Beneméritos
 
Mensagens: 82
Registrado em: Dom Jun 19, 2011 12:46 am
Localização: Apiacás - MT
BrazilFW Box:


Voltar para Programming

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante