最简单的方法是,生成一个迭代,从最小和最大日期值输出%Y-%m*
字符串,形式为'%Y-%m-%d`?我可以使用
ST_DT=${6-`hdfs dfs -ls /filepath/key=* | head -2 | tail -1 | cut -d '/' -f6 | cut -d '=' -f2`}
EN_DT=${5-`hdfs dfs -ls /filepath/key=* | tail -1 | cut -d '/' -f6 | cut -d '=' -f2`}
这确实给了我一些例子:
2018-01-01
2018-03-07
我希望能够生成:
2018-01*
... 2018-02*
... 2018-03*
...等
感谢@anubhava的最终答案:
while [[ $(date +%s -d $i) -le $endt ]]; do
yr=`date --date "$i" +%Y`
mth=`date --date "$i" +%m`
echo "$yr-$mth*"
i=$(date '+%Y-%m-%d' -d "$i +1 month")
done
答案 0 :(得分:1)
您可以使用gnu date
:
ST_DT='2018-01-01'
EN_DT='2018-03-07'
endt=$(date '+%s' -d "$EN_DT")
i="$ST_DT"
while [[ $(date +%s -d $i) -le $endt ]]; do
echo "${i%-*}*"
i=$(date '+%Y-%m-%d' -d "$i +1 month")
done
2018-01*
2018-02*
2018-03*