循环使用不同日期输入的python脚本

时间:2018-01-23 10:48:22

标签: bash

我有一个必须用开始日期和结束日期执行的python脚本。我想在2012年的每一天执行这个文件,所以我认为bash脚本中的while循环可以完成这项工作,但我的bash技能还不够。

这就是我的尝试:

day_start = 2012-01-01

while [ "$day_start" != 2013-01-01 ] ; 
do
    day_end =$(date -I -d "$day_start + 1 day")
    python script.py --since ="$day_start" --until = "$day_end" ;
    day_start =$(date -I -d "$day_start + 1 day")
    echo $day_start
done 

我得到的错误信息是python似乎不喜欢" $ bash-variable"输入。另外,我认为这是在bash中使用+1的方法,但是我也得到了day_end和day_start的错误。有人可以帮帮我吗? (对不起,如果这可能是非常基本的!)

2 个答案:

答案 0 :(得分:1)

man bash说:

  

可以通过表单

的语句分配变量
name=[value]

因此,您需要将day_start = 2012-01-01替换为day_start=2012-01-01,类似于其他两项作业。

答案 1 :(得分:1)

一种更简单的方法可能是将python脚本的内容包含在2012年每天迭代的while循环中,并且完全不需要使用bash。

如果您的脚本内容是:

year, month, day = sys.argv[1].split('-')
print(datetime.date(int(year), int(month), int(day)).strftime('%d'))

它会变成:

date = datetime.date(2012, 1, 1)
while date.year != 2013:
    print(date.strftime('%d'))
    date += datetime.timedelta(days=1)