루프가 잘못된 날짜를 생성하는 동안

루프가 잘못된 날짜를 생성하는 동안

다음 루프가 있지만 멈추지 않고 잘못된 날짜를 생성합니다.

#!/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

나는 다음과 같은 결과를 기대합니다.

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

이 목표를 어떻게 달성할 수 있나요?

답변1

i카운터가 전혀 필요하지 않습니다.
각 반복마다 현재 날짜를 1씩 증가시키기만 하면 됩니다.

#!/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

관련 정보