2012-08-24 72 views
7

我需要生成在一年的所有天弦的隨機數據的日期範圍如何產生的慶典

例如:

MIN_DATE=01.01.2012 

MAX_DATE=31.12.2012 

for date in {1...366..1} 
do 
echo ... 
done 

回答

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

如何自動執行此操作 泄漏年? –

+0

@DmitryDubovitsky你是什麼意思? '29.02.2012'出現在輸出中。 –

+0

要輸出自動, 例如對於2011年前年的紀錄會是2012-01-01 東西: 'days_in_year =日期 「2012-12-31」 + 「%J」; for d in ...' –

2

不是一個純粹的bash的解決辦法,但我dateutils能幫助:

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

輸出格式可配置-f和輸入格式機智h -i

0

使用ISO 8601日期格式(年 - 月 - 日),可以按照字典順序比較日期。由於bash沒有字符串的「< =」運算符,所以比我想要的要稍微複雜一些。

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