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

[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


reply via email to

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