如何在linux命令中检查指定范围内每天的日期输出



我有这个命令date -d "-0 month -$(($(date +%d)-1)) days" +%Y%m%d,我想知道2014-Sep-1和2014-Sep-30之间的所有日子,返回的结果是什么。

如何在不更改系统时钟的情况下模拟它?

您可以再次使用date-d选项。

$ date -d "2014-09-01"
Mon Sep  1 00:00:00 CEST 2014
$ date -d "2014-09-01 + 1 day"
Tue Sep  2 00:00:00 CEST 2014

所以类似的东西

for i in `seq 0 29`
do
    today=$(date -d "2014-09-01 + $i days" '+%F')
    day=$(date -d "2014-09-01 + $i days" '+%-d')
    date -d "$today -0 month -$(($day - 1)) days" '+%Y%m%d'
done

应该做到这一点。请注意,我已将格式说明符更改为%-d。否则,shell将把前九个值解释为八进制,这将在08和09时失败。

然而,我不太确定你最终想要实现什么。如果您只想打印本月的第一天,

$ date '+%Y%m01'

看起来简单多了

最新更新