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

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

Script dton erro


From: Geison Farias
Subject: Script dton erro
Date: Sat, 10 May 2003 11:23:35 -0300

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




reply via email to

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