You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash循环为Python脚本传入2012年每日日期参数?

别担心,这都是Bash新手常踩的小坑,我来帮你一步步修正!

先说说你原脚本里的几个问题:

  • 变量赋值不能有空格:Bash里变量名、等号、值之间必须紧挨着,比如day_start = 2012-01-01会被当成执行day_start命令,直接报错。正确写法是day_start=2012-01-01,同理day_end =$(...)要改成day_end=$(...)。
  • date命令的日期递增格式:有些系统的date命令对+ 1 day的空格敏感,更稳妥的写法是"$day_start +1 day"(去掉空格)或者"$day_start next day"。
  • Python参数的空格陷阱:--since ="$day_start"里等号前后的空格会让Bash把--since和="$day_start"拆成两个独立参数,Python脚本根本识别不了正确的参数值,必须改成--since="$day_start"(等号前后无空格)。

修正后的完整脚本:

#!/bin/bash
day_start=2012-01-01
end_date=2013-01-01

while [ "$day_start" != "$end_date" ]; do
    # 计算次日的ISO格式日期
    day_end=$(date -I -d "$day_start +1 day")
    # 执行Python脚本,参数格式要正确
    python script.py --since="$day_start" --until="$day_end"
    # 更新起始日期为次日,进入下一轮循环
    day_start="$day_end"
    echo "$day_start"
done

额外补充:

如果你的系统是macOS,默认的date命令不支持-d和-I参数,需要先安装GNU版本的date:

brew install coreutils

然后把脚本里的date替换成gdate即可。

最后给脚本加执行权限,就能运行了:

chmod +x run_daily.sh
./run_daily.sh

内容的提问来源于stack exchange,提问作者Florestan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:03:12