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

如何将Python脚本的多个输出值传递给Bash Shell脚本

解决方案

你提到的x=($(python 脚本路径))写法是可用的,echo $x仅输出第一个值是Bash数组的默认特性:直接引用数组名时默认返回索引为0的第一个元素,完整操作方案如下:


方法1:使用Bash数组接收(适合返回值无空格的场景)

你的Python脚本无需修改,保持现有空格分隔打印返回值的逻辑即可,Bash脚本按如下方式编写:

#!/bin/bash
# 将Python的输出按空格拆分,存入数组
results=($(~/.conda/envs/vegetation/bin/python ./python.py))

# 按索引读取对应值,Bash数组索引从0开始
result1=${results[0]}
result2=${results[1]}
result3=${results[2]}

# 测试验证
echo "result1值为:$result1"
echo "result2值为:$result2"
echo "result3值为:$result3"

# 后续你的业务逻辑

如果需要查看数组所有元素,执行echo ${results[@]}即可。


方法2:指定分隔符直接赋值(更稳妥,支持返回值带空格的场景)

如果后续返回值可能包含空格,可以自定义分隔符避免拆分错误,操作步骤如下:

  1. 修改Python脚本的打印逻辑,指定分隔符(比如用逗号,确保你的返回值里不含该字符即可):
# 把原来的print(result1, result2, result3)改为:
print(result1, result2, result3, sep=',')
  1. Bash脚本直接读取赋值给三个变量,不需要操作数组:
#!/bin/bash
# 指定分隔符为逗号,直接读取三个变量
IFS=, read -r result1 result2 result3 < <(~/.conda/envs/vegetation/bin/python ./python.py)

# 直接使用变量即可
echo "result1值为:$result1"
echo "result2值为:$result2"
echo "result3值为:$result3"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:15:04