我需要在一年中的所有日子里生成字符串
前任:
MIN_DATE=01.01.2012
MAX_DATE=31.12.2012
for date in {1...366..1}
do
echo ...
done
for d in {0..365}; do date -d "2012-01-01 + $d days" +'%d.%m.%Y'; done
不是纯 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
输入格式可以用-i
.
使用 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