我有一个必须用开始日期和结束日期执行的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的错误。有人可以帮帮我吗? (对不起,如果这可能是非常基本的!)
答案 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)