从当前日期开始,获取每月的第一天和最后一天

时间:2019-09-12 11:33:40

标签: bash date terminal

我想多次运行python文件,并在每次运行时更改输入值。在这种情况下,输入值是网站地址和两个日期范围,分别具有给定的开始日期和给定的结束日期。

示例:

我想遍历并运行该文件,并在12个月前使用不同的日期。

文件

迭代1,今天的日期和当月的第一天:

run -i 'file.py' 'https://www.example.com/' '2019-09-01' '2019-09-12'

迭代2,上个月的第一个日期和上个月的最后一个日期:

run -i 'file.py' 'https://www.example.com/' '2019-08-01' '2019-08-31'

迭代3:

run -i 'file.py' 'https://www.example.com/' '2019-07-01' '2019-07-31'

...

继续迭代12个月

我已经设法建立一个用于生成日期的for循环,但是我在合并python文件时遇到了麻烦。

for i in {1..12}; do 
    echo $(date -I -d "2019-09-01 -$i months")
done

输出:

2019-08-01
2019-07-01
2019-06-01
2019-05-01
2019-04-01
2019-03-01
2019-02-01
2019-01-01
2018-12-01
2018-11-01
2018-10-01
2018-09-01

2 个答案:

答案 0 :(得分:0)

您可以尝试

run -i 'file.py' 'https://www.example.com/' '2019-09-01' '2019-09-12'
for i in {1..12}; do 
    run -i 'file.py' 'https://www.example.com/' '`echo $(date -I -d "2019-09-01 -$i months")`' '`echo $(date -I -d "2019-09-31 -$i months")`'
done

您可以使用反引号(`)评估命令并替换命令输出中的内容,例如您的日期。

更好的方法是调用python script from another script(假设您是第一个脚本的编写者)。

答案 1 :(得分:0)

您可以使用以下代码:

d1=$(date '+%Y-%m-01')
d2=$(date '+%Y-%m-%d')
for i in {1..12}; do 
    run -i 'file.py' 'https://www.example.com/' $d1 $d2
    d2=$(date -d "$d1 -1 day"  '+%Y-%m-%d')
    d1=$(date -d "$d2" '+%Y-%m-01')
done

说明:

  • 我们从第一天的d1开始,当前月份的当前一天的d2
  • 对于每次迭代,我们通过减去一天来从上一个日期d2(即上个月的第一天)推导出d1

将执行以下命令行:

run -i file.py 'https://www.example.com/' 2019-09-01 2019-09-12
run -i file.py 'https://www.example.com/' 2019-08-01 2019-08-31
run -i file.py 'https://www.example.com/' 2019-07-01 2019-07-31
run -i file.py 'https://www.example.com/' 2019-06-01 2019-06-30
run -i file.py 'https://www.example.com/' 2019-05-01 2019-05-31
run -i file.py 'https://www.example.com/' 2019-04-01 2019-04-30
run -i file.py 'https://www.example.com/' 2019-03-01 2019-03-31
run -i file.py 'https://www.example.com/' 2019-02-01 2019-02-28
run -i file.py 'https://www.example.com/' 2019-01-01 2019-01-31
run -i file.py 'https://www.example.com/' 2018-12-01 2018-12-31
run -i file.py 'https://www.example.com/' 2018-11-01 2018-11-30
run -i file.py 'https://www.example.com/' 2018-10-01 2018-10-31