【发布时间】:2021-12-13 11:34:53
【问题描述】:
我需要一个 python 脚本来计算一些数值,在下一步中,这些数值将传递给另一个 shell bash 脚本以继续以下计算。假设python脚本是./python.py,即:
import numpy as np
def func(arg1, arg2):
...
result1=0.111
result2=0.222
result3=0.333
return result1, result2, result3
arg1=1
arg2=2
result1, result2, result3 = func(arg1, arg2)
print(result1, result2, result3)
bash 脚本是./bash.sh,其中包含:
#!/bin/bash
...
~/.conda/envs/vegetation/bin/python split_nc_domain.py
...(following part which needs result1, result2, result3)
那么如何将result1, result2, result3 传递给./bash.sh?我知道如果我只有一个输出,我可以使用以下命令:
VARIABLE=`~/.conda/envs/vegetation/bin/python split_nc_domain.py` 或 VARIABLE=$(~/.conda/envs/vegetation/bin/python split_nc_domain.py)。但是我怎样才能为python的多个输出做到这一点呢?谢谢!
更新:
cmets 中有人建议我使用x=($(~/.conda/envs/vegetation/bin/python split_nc_domain.py))。但下一步我能做什么?有没有像x[0], x[1], x[2] 这样的东西来检查? by echo $x 我只能看到第一个值0.111 是第一个变量的值。
【问题讨论】:
-
请将 ./python.py 的输出添加到您的问题中。
-
通用方法是通过一个永远不会出现在值中的分隔符来分隔输出的值,然后使用
bash中的分隔符来读取值,例如IFS=<delimiter> read -r var1 var2 var3。如果你使用换行符作为分隔符,你可以在循环中使用IFS='' read -r line -
嗨@Cyrus,“./python.py 的输出”是什么意思?
-
我在问题描述中添加了result1、result2和result3的示例值。它们是 float64 类型的。
-
由于“结果”只是一堆数字,我会将它们写入标准输出(用空格分隔)。在 bash 中,您获取此输出并将数字传输到 bash 数组中。
标签: python-3.x bash shell variables