Enquanto o loop produz datas erradas [duplicado]

0

Eu tenho o seguinte loop, mas ele não para e produz as datas erradas.

#!/bin/bash
i=0
thedate="2018-03-28"
enddate="2018-04-02"
while [ "$thedate" != "$enddate" ]; do
    thedate=$( date -d "$thedate + $i days" +%F )

    new_date=$( date -d "$thedate " +%Y%m%d )
    printf 'The date is "%s"\n' "$new_date"
    i=$(( i + 1 ))
done

Eu esperava essa saída:

The date is "20180328"
The date is "20180329"
The date is "20180330"
The date is "20180331"
The date is "20180401"
The date is "20180402"

Como posso conseguir isso?

    
por sunil 22.05.2018 / 19:18

1 resposta

1

Você não precisa do contador i de maneira alguma. Você só precisa incrementar a data atual em 1 em cada iteração.

#!/bin/bash
thedate="2018-03-28"
enddate="2018-04-02"
while [ "$thedate" != "$enddate" ]; do
    thedate=$( date -d "$thedate + 1 days" +%F )

    new_date=$( date -d "$thedate " +%Y%m%d )
    printf 'The date is "%s"\n' "$new_date"
done
    
por 22.05.2018 / 19:43