将python脚本的输出返回到bash变量[重复]

Posted

技术标签:

【中文标题】将python脚本的输出返回到bash变量[重复]【英文标题】:Returning output from python script to bash variable [duplicate] 【发布时间】:2021-01-22 03:26:45 【问题描述】:

我在 shell 脚本方面相对较新,我想对以下内容进行一些澄清。

如果我有一个执行以下操作的 python 脚本:

def return_output():
    a = 1
    b = 2
    return a+b

if __name__ == "__main__":
    return_output()

说我想在 bash 中运行这个脚本,我想通过一个变量在 bash 中检索输出值:

summation=$(python total.py)
echo $summation

如果我运行以下 shell 脚本,则不会有任何响应。

但是,我注意到当我将“return a+b”的python代码更改为“print(a+b) " 相反,当我运行 shell 脚本时,我会得到 "3" 的回显值。

3

因此我的问题是,如果要在终端中执行 python 脚本,是否总是需要 print 输出而不是使用 return 关键字?

【问题讨论】:

【参考方案1】:

是的。除了 Python 的 stdout 之外,Bash 没有(简单的)与 Python 通信的方式,因此如果您希望 bash 知道该输出是什么,则始终必须打印输出。

【讨论】:

【参考方案2】:

是的。

您需要print(...)(写入标准输出)以在变量中捕获脚本的输出。

除此之外,您还可以在脚本成功运行时调用sys.exit(0),或者在脚本失败时调用sys.exit(1)。这符合common UNIX CLI patterns。

【讨论】:

以上是关于将python脚本的输出返回到bash变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将curl的输出捕获到bash中的变量[重复]

Bash 没有存储返回的 PHP 变量 [重复]

将输出分配给Bash中的变量[重复]

Bash 脚本将命令输出存储到变量中

通过bash将输出重定向到文件[重复]

在 Bash 中同时捕获标准输出和标准错误 [重复]