如何像bash中的函数一样调用python脚本?

时间:2016-01-11 21:18:57

标签: python linux bash shell

我有一个build.sh脚本,我的自动构建服务器作为构建的一部分执行。构建逻辑的很大一部分是计算和构建版本号。所有这些逻辑都在python脚本中,例如calculate-version.py

通常我在这种情况下要做的是设置python脚本以仅打印版本号,我将从bash脚本中读取stdout,并将其分配给环境变量。然而,python脚本变得非常复杂,我想开始向它添加日志。

我需要能够从Python脚本(通过print())输出(stdout)日志,同时完成后,传播一个"返回值"从python脚本返回到父shell脚本。

这样做的最佳方式是什么?我想通过环境变量来做到这一点,但我的理解是父进程无法获得的那些。

2 个答案:

答案 0 :(得分:0)

简短回答:你不能。 * nix样式可执行文件的返回值是0-255之间的无符号整数。这通常表明它是否失败,但您可以选择它以供您自己使用。

在这种情况下,我不认为一个无符号字节就足够了。因此,您需要以其他方式输出它。你有几个选择

  1. 最简单的(在这种情况下可能是最好的)是继续在stdout输出输出数据,并将您的日志/调试信息发送到其他地方。这可能是一个文件,或者(它的类型)stderr
  2. 将数据输出到文件(例如命令行参数中给出的文件)
  3. 安排某种命名管道方案。实际上,这与将其发送到文件几乎相同。

答案 1 :(得分:0)

创建一个可执行的python脚本,用于打印变量print 99

#!/usr/bin/python
print 99

chmod a+x test.py将其设置为可执行文件。

从bash执行此操作a=$(./test.py)如果您打印aecho $a),则应获得99

要仅获取version number,您应该只打印version number