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

如何在Bash中为多个Python脚本指定输入参数(含screener_beta1场景)

嘿,这个场景我之前实操过,给你几种实用的方案来搞定在Bash环境中给多个Python脚本指定对应输入的需求:

分情况处理:根据脚本接收输入的方式选择方法

首先得明确你的Python脚本是通过命令行参数接收输入(比如用sys.argv),还是运行过程中交互式弹窗要求输入(比如用input()函数),两种情况的处理方式不同:

情况1:脚本通过命令行参数接收输入

如果你的screener_beta1.py是基于命令行参数编写的,比如:

import sys
# 接收3个命令行参数
arg1 = sys.argv[1]
arg2 = sys.argv[2]
arg3 = sys.argv[3]
print(f"获取到参数:{arg1}, {arg2}, {arg3}")

那在Bash里直接把参数跟在脚本后面就行,多个脚本依次执行的话:

# 单独运行screener_beta1,传入3个参数
python3 screener_beta1.py 2024-01-01 1000 tech

# 批量运行多个脚本,每个脚本带自己的参数
# 用&&表示前一个脚本成功执行才会运行下一个;用;则不管前一个结果都执行
python3 script_a.py apple banana && python3 screener_beta1.py 2024-01-01 1000 tech && python3 script_b.py 123

情况2:脚本是交互式要求输入

如果screener_beta1.py是运行时弹出提示让用户输入,比如:

arg1 = input("请输入日期:")
arg2 = input("请输入阈值:")
arg3 = input("请输入行业:")
print(f"获取到输入:{arg1}, {arg2}, {arg3}")

这种情况需要把预设的输入内容“喂”给脚本,推荐两种方式:

方法A:用管道传递多行输入

# 给screener_beta1传入3行输入
echo -e "2024-01-01\n1000\ntech" | python3 screener_beta1.py

# 多个脚本依次处理
echo -e "red\nbule" | python3 script_a.py ; echo -e "2024-01-01\n1000\ntech" | python3 screener_beta1.py

echo -e用来解析换行符\n,每一行对应脚本的一次输入请求。

方法B:用Here-Document(可读性更强)

这种方式适合输入内容较多或有特殊字符的场景,看起来更直观:

# 运行screener_beta1并提供输入
python3 screener_beta1.py << EOF
2024-01-01
1000
tech
EOF

# 批量运行多个脚本,每个脚本对应自己的输入块
python3 script_a.py << EOF
red
blue
EOF

python3 screener_beta1.py << EOF
2024-01-01
1000
tech
EOF

进阶:把批量运行逻辑写成Bash脚本

如果需要频繁执行这些脚本,可以把所有步骤写到一个可执行的Bash脚本里,比如run_all_scripts.sh:

#!/bin/bash

echo "开始运行第一个脚本..."
python3 script_a.py apple banana

echo "开始运行screener_beta1..."
python3 screener_beta1.py << EOF
2024-01-01
1000
tech
EOF

echo "开始运行最后一个脚本..."
python3 script_b.py 123

然后给脚本添加执行权限:

chmod +x run_all_scripts.sh

之后直接运行就能批量处理所有脚本:

./run_all_scripts.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:59:52