OS X(Snow Leopard)上的日期函数没有像GNU版本那样的--date选项,我无法弄清楚如何在OS X上获得以下内容:
startdate=2010-01-01
enddate=2010-01-31
foldate="$startdate"
until [ "$foldate" == "$enddate" ]
do
# do something with the date here - like pass it as a parameter to a command
foldate=`/bin/date --date "$foldate 1 day" +%Y-%m-%d`
done
解决了SiegeX的答案:
startdate=2010-01-01
enddate=2010-01-31
sDateTs=`date -j -f "%Y-%m-%d" $startdate "+%s"`
eDateTs=`date -j -f "%Y-%m-%d" $enddate "+%s"`
dateTs=$sDateTs
offset=86400
while [ "$dateTs" -le "$eDateTs" ]
do
date=`date -j -f "%s" $dateTs "+%Y-%m-%d"`
printf '%s\n' $date
dateTs=$(($dateTs+$offset))
done
答案 0 :(得分:2)
运行man date
阅读日期的联机帮助页,然后查看-v
选项。这是一段摘录:
-v 调整(即拍摄 当前日期并显示结果 调整;实际上没有设定 日期)第二,分钟,小时,月份日,工作日, 根据val的月份或年份。如果 val前面带有加号或减号,日期为 向前或向后调整 根据 到剩下的字符串,否则是相关的部分 日期已设定。日期可以 使用这些标志根据需要调整了多次。旗帜是 按照给定的顺序处理。