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

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

Re: RES: [shell-script] como subtrair datas


From: verde6666
Subject: Re: RES: [shell-script] como subtrair datas
Date: Wed, 29 Jan 2003 12:36:06 -0000
User-agent: eGroups-EW/0.82

oi julio,

andei brincando agora com seus scripts, são realmente geniais!

sobre o comentário do ano bissexto, eu **acho** que achei
a parte que trata disso no primeiro script, mas minha cabeça
dói quando pensa em datas, sou horrível nisso...


> cat dton.sh
> TotDias=$((1 + 365 * (AFim - 1980) + (AFim - 1980) / 4))
> [ $((AFim % 4)) = 0 -a $MFim -le 2 ] && TotDias=$((TotDias - 1))

acho que é esta linha né? ^^^^


> [ $MFim -ne 1 ] &&
> for i in `echo "31 28 31 30 31 30 31 31 30 31 30 31" | cut -f-
$((MFim - 1)) -d" " 2> /dev/null`
> do
>         TotDias=$((TotDias + $i))
> done
> echo $((TotDias + DFim))

se você me permite, gostaria de sugerir uma pequena alteração
na linha do for, pra que fique menor.

se você adicionar um espacinho antes do 31 do mes de janeiro,
não precisa fazer o $((MFim - 1)) no cut, pode ficar direto:

for i in `echo " 31 28 31 30 31 30 31 31 30 31 30 31" | cut -f-$MFim 
-d" "`

(tirei tb o /dev/null, pois o cut sempre receberá valores OK)

e outra, além disso, o condicional do mês, pra só executar o
for se não for Janeiro  "[ $MFim -ne 1 ] &&" , também não
precisa mais, pois o cut -f-1 irá retornar um espaço em branco
(aquele, que acabamos de por) e o loop for não será executado.
então esse trecho todo poderia ser simplificado para:

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
echo $((TotDias + DFim))


testei no bash e deu certo, creio no ksh também não deve ter
problema.

falou!


reply via email to

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