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

如何从Shell脚本向Python程序传递可变数量的参数?

解决Shell脚本传递可变参数给Python的问题

情况1:无需单独处理每个参数

如果只是要把Shell脚本收到的所有参数原封不动传给Python,根本不用写循环,直接用"$@"这个特殊变量就行——它会完美保留每个参数的原始格式(比如带空格的参数不会被拆成多个),等价于把所有参数按"$1" "$2" "$3" ...的形式传递。

示例代码:

# 保留你的其他预处理逻辑(如果有的话)
python3.6 abc.py "$@"

情况2:需要先处理每个参数

如果必须对每个参数做修改(比如替换内容、添加前缀后缀),可以用数组存储处理后的参数,再传递给Python:

# 初始化空数组存处理后的参数
processed_args=()

# 遍历所有传入的参数
for arg in "$@"; do
    # 这里写你的处理逻辑,比如给参数添加前缀
    processed_arg="processed_$arg"
    # 将处理后的参数加入数组
    processed_args+=("$processed_arg")
done

# 把数组中的所有参数传给Python
python3.6 abc.py "${processed_args[@]}"

关键注意点

  • 必须用双引号包裹"$@"和"${processed_args[@]}",否则如果参数包含空格、引号或特殊字符,会被Shell错误拆分,导致Python收到的参数混乱。
  • 不带双引号的$@会把所有参数拼接成一个字符串再拆分,这是错误用法,绝对要避免。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:25:56