bash - 按月迭代 bash 中的最小和最大日期

标签 bash iteration

生成一个迭代的最简单方法是什么,该迭代以“%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/

相关文章:

bash脚本: extracting and converting files

bash - 在 bash 脚本中将子 shell 中的 stderr 重定向到当前 shell 中的 stdout

python - 如何反转多维数组中的重复值

JavaScript 访问列表中的 anchor

java - Java foreach 对原语的迭代顺序是否精确定义?

python - python中通过键迭代字典多个值

bash - 在 bash/shell 中覆盖 mkdir

Bash - 创建在后台运行任务并继续运行其他任务的别名

linux - ls 命令忽略特定目录 [bash]

R 同时循环遍历两个或多个向量 - 并行