生成一个迭代的最简单方法是什么,该迭代以“%Y-%m-%d”的形式从最小和最大日期值输出 %Y-%m*
字符串?我能够从我的文件系统中获取最小和最大日期
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
最佳答案
您可以使用 gnu date
使用此 shell 循环:
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*
关于bash - 按月迭代 bash 中的最小和最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49382310/