[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Script dton erro
From: |
Mateus Caruccio |
Subject: |
Re: [shell-script] Script dton erro |
Date: |
Mon, 12 May 2003 22:01:20 +0800 |
ola,
o problema esta na base que voce utiliza para o numero 8:
se for 08 o shell interpreta como base octal e como os numeros octais so vao de
0 ate 7 ocorre um erro quando vc tenta forcar o numero 08 em octal. eh o mesmo
que querer utilizar o numero G em hexa, ou 3 em binario, sacou ?? o numero esta
fora do range aceitavel...
por isso que "echo $((01 + 07))" e "echo $((01 + 8))" funcionam, mas "echo
$((01 + 08))" nao funciona.
em octal, 07 eh 7 em decimal, 01 eh 1 em decimal, etc...
voce deve converter os numeros maiores que 07 (em octal) antes de realizar a
soma... talvez com um sed, sei la:
# echo "08" | sed -ne 's/[0]*\(.*\)/\1/p'
8
[]'s
Mateus Caruccio
----- Original Message -----
From: Geison Farias <address@hidden>
Date: Sat, 10 May 2003 11:23:35 -0300
To: address@hidden
Subject: [shell-script] Script dton erro
>
> Olá pessoal,
>
> Estão lembrados daque script do Júlio "dton"? tive um probleminha com
> ele nos dias 08 e 09 que estava dando a seguinte mensagem de erro:
>
> para dias 08
> ./dton.sh: 08: value too great for base (error token is "08")
>
> para dias 08
> ./dton.sh: 09: value too great for base (error token is "09")
>
> Segue o script, mais abaixo, com um incremento para evitar o erro.
>
> No ksh acontece a mesma coisa ou eh so' no bash (linux)? Não tenho
> o ksh aqui para testar.
>
> #!/bin/bash
> #
> # shell original !/bin/ksh
> #
> #======================================================================
> # Calcula qtd dias entre uma data passada como parametro e 01/01/1980.
> # Se nao for passado nenhum parametro a data de hoje sera assumida.
> # Obs. Para executar este programa sob o sh, trocar os $((..)) por expr
> #======================================================================
> # Leia: Linux - Programacao Shell ISBN: 85-7452-048-9
> # Autor: Julio Cezar Neves <mailto:julio.neves@b...>
> #======================================================================
> #
> if [ $1 ]
> then
> DFim=`echo $1 | cut -f1 -d"/"`
> MFim=`echo $1 | cut -f2 -d"/"`
> AFim=`echo $1 | cut -f3 -d"/"`
> else
> DFim=`date +%d`
> MFim=`date +%m`
> AFim=`date +%Y`
> fi
> TotDias=$((1 + 365 * (AFim - 1980) + (AFim - 1980) / 4))
> [ $((AFim % 4)) = 0 -a $MFim -le 2 ] && TotDias=$((TotDias - 1))
> # modificado aqui por sugestao de verde6666
> for i in `echo " 31 28 31 30 31 30 31 31 30 31 30 31" | cut -f-$MFim -d" "`
> do
> TotDias=$((TotDias + $i))
> done
>
> # passou a dar este erro(*) no 08 e 09 e modifiquei para pegar o valor sem
> # o zero na frente.
> # (*) ./dton.sh: 08: value too great for base (error token is "08")
>
> CARACTER1=$( echo $DFim | cut -c1-1 )
> [ "$CARACTER1" = "0" ] && DFim=$( echo $DFim | cut -c2-2 )
>
> echo $((TotDias + DFim))
> # fim do script
>
>
> Alguém refresca minha memória de como é o tratamento desta operações
> abaixo?
>
> eletro [/home/geison] > echo $(( 01 + 07 ))
> 8
> eletro [/home/geison] > echo $(( 01 + 08 ))
> bash: 01 + 08: value too great for base (error token is "08")
> eletro [/home/geison] > echo $(( 01 + 8 ))
> 9
> eletro [/home/geison] > echo $(( 01 + 09 ))
> bash: 01 + 09: value too great for base (error token is "09")
> eletro [/home/geison] > echo $(( 01 + 9 ))
> 10
>
> []' octais
>
> Geison Farias
> Recife - PE
>
>
>
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em
> http://www.listasdiscussao.cjb.net
> ---------------------------------------------------------------------
>
>
> Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
> http://br.yahoo.com/info/utos.html
>
>
# ########################################################
# Mateus de Oliveira Caruccio <caruccio at operamail.com>
# Linux User #183552 - UIN #37364320
# Vim, vi e matei o Emacs !
--
____________________________________________
http://www.operamail.com
Get OperaMail Premium today - USD 29.99/year
Powered by Outblaze
- Re: [shell-script] Script dton erro,
Mateus Caruccio <=