gpt4 book ai didi

python - 从 bash 中的 python 函数收集返回值

转载 作者:太空狗 更新时间:2023-10-29 12:16:00 27 4
gpt4 key购买 nike

我正在实现一个将调用 python 脚本的函数/方法的 bash 脚本。我想将此函数的返回值收集到调用 bash 脚本中的局部变量中。

try1.sh 包含:

#!/bin/sh
RETURN_VALUE=`python -c 'import try3; try3.printTry()'`
echo $RETURN_VALUE

现在是 python 脚本:

#!/usr/bin/python

def printTry():
print 'Hello World'
return 'true'

关于执行 bash 脚本:

$./tr1.sh
Hello World

没有 'true' 或在那个地方没有任何其他类型根据需要回显到 stdout。

我希望能够做的另一件事是,我的 avtual python 代码将有大约 20-30 个函数返回我的软件状态机的各种状态值,我会从 bash 脚本调用这些函数。在 bash 脚本中,我必须将这些返回值存储在局部变量中,这些变量将在调用 bash 脚本中实现的状态机逻辑中进一步使用。

对于每个值,我都会执行 python -c 'import python_module; python_module.method_name',它会一次又一次地重新枚举状态机的定义状态,这是我不想要的。我想避免让整个 python 脚本只为调用一个函数而运行。这可能吗?

这里可以想到哪些可能的解决方案/建议/想法?

非常感谢您的回复。

为了阐明我的意图,任务是将 bash 脚本的一部分替换为 python 脚本以提高可读性。 bash 脚本确实非常大(约 15000 行),因此不能完全由单个 python 脚本替代。所以可以确定需要改进的部分可以用python代替。

此外,我曾考虑过按照 Victor 在下面的评论中所建议的那样,用 python 脚本替换整个 bash 脚本,但在我的情况下这是不可行的。因此,我必须将状态机分为 bash 和 python,其中 python 将有一些必需的方法返回 bash 脚本所需的状态值。

问候,优素福·侯赛尼。

最佳答案

如果您不关心 python 函数打印到标准输出的内容,您可以这样做:

$ py_ret_val=$(python -c '
from __future__ import print_function
import sys, try3
print(try3.printTry(), file=sys.stderr)
' 2>&1 1>/dev/null)

$ echo $py_ret_val
true

关于python - 从 bash 中的 python 函数收集返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24553728/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com