2012-08-24 13 views

cevap

11
for d in {0..365}; do date -d "2012-01-01 + $d days" +'%d.%m.%Y'; done 
+0

bu, otomatik olarak sızıntısı nasıl yapılır? –

+0

@DmitryDubovitsky Ne demek istiyorsun? '29.02.2012' çıktıda mevcut. –

+0

son rekor 2012-01-01 şey olurdu 2011 yılı için çıkışa otomatik, örneğin ister: 'days_in_year = tarih "2012/12/31" + "% j"; D içinde d ... –

2

Değil saf bash çözüm, ama benim dateutils can yardım:

dseq 01.01.2012 31.12.2012 -f %d.%m.%Y -i %d.%m.%Y 
=> 
    01.01.2012 
    02.01.2012 
    ... 
    31.12.2012 

Çıktı biçimi -f ve giriş formatı zekâ ile yapılandırılabilir h -i.

0

ISO 8601 tarih formatını (yıl-ay-gün) kullanarak, sözcükleri sözlüksel olarak karşılaştırabilirsiniz. bash, "< =" dizesi için bir işleve sahip olmadığı için, istediğimden biraz daha karışıktır.

year=2011 
d="$year-01-01" 
last="$(($year+1))-01-01" 
while [[ $d < $last ]]; do 
    echo $d 
    d=$(date +%F --date "$d + 1 day") 
done 
İlgili konular