--- Em ter, 28/7/09, Cristiano Ferrari <[email protected]> escreveu:

> De: Cristiano Ferrari <[email protected]>
> Assunto: [shell-script] Re: 'for' em um intervalo de datas
> Para: [email protected]
> Data: Terça-feira, 28 de Julho de 2009, 19:52
> --- Em [email protected],
> Lucien Raven <lucienra...@...> escreveu
> >
> > 
> > Do baú empoeirado dos scripts que sempre podem ser
> úteis... adaptado de algum lugar da Internet:
> > 
> > 
> > # cat datas.sh
> > #!/bin/bash
> > DATAOLD=`date +%s -d "$1"`
> > DATANEW=`date +%s -d "$2"`
> > ((QTOSSEGS=DATANEW-DATAOLD))
> > echo - | awk -v SEGS=$QTOSSEGS '{printf "Dias :
> %d",SEGS/(60*60*24)}'
> > 
> > Uso:
> > 
> > # sh ./datas.sh 2009-01-01 2009-07-27
> > Dias : 207
> > 
> > Lembre-se que a primeira data sempre tem que ser mais
> antiga que a segunda.
> > 
> > Espero que ajude.
> > 
> > LR :>
> > 
> 
> 
> Valeu, mas acho que me expressei mal.
> 
> Não quero a quantidade de dias, quero os dias.
> 
> Por exemplo:
> 
> DATAINI='30/03/2009'
> DATAFIM='02/04/2009'
> 
> for DIA in 30/03/2009 31/03/2009 01/04/2009 02/04/2009 ;
> do
> echo "Hoje é dia: $DIA"
> done
> 
> O que quero é algo que me retorne a lista de dias, à
> partir do dia inicia e final, entende?
> 
> 
>

Aproveitando a dica do Eduardo:

# cat datas.sh
#!/bin/bash
DATAOLD=`date +%s -d "$1"`
DATANEW=`date +%s -d "$2"`
((QTOSSEGS=DATANEW-DATAOLD))
((DIAS=QTOSSEGS/(60*60*24)))
for i in `seq 0 $DIAS`
do
 date -d "$1 $i days" "+%d/%m/%Y"
done

# sh ./datas.sh 2009-01-25 2009-02-05
25/01/2009
26/01/2009
27/01/2009
28/01/2009
29/01/2009
30/01/2009
31/01/2009
01/02/2009
02/02/2009
03/02/2009
04/02/2009
05/02/2009


LR :>



      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

Responder a