如何从python调用shell脚本函数/变量?

Nee*_*rav 5 python bash

有没有办法调用shell脚本并使用python脚本中定义的函数/变量?

脚本是 unix_shell.sh

#!/bin/bash
function foo
{
...
}
Run Code Online (Sandbox Code Playgroud)

是否可以从python调用这个函数foo?

解决方案:

  1. 对于函数:将 Shell 函数转换为 python 函数
  2. 对于 shell 局部变量(非导出),在 shell 中运行此命令,就在调用 python 脚本之前:
    export $(set | tr '\n' ' ')

  3. 对于 shell 全局变量(从 shell 导出),在 python 中,您可以: import os print os.environ["VAR1"]

Eri*_*ric 6

是的,与从另一个 bash 脚本中调用它的方式类似:

import subprocess
subprocess.check_output(['bash', '-c', 'source unix_shell.sh && foo'])
Run Code Online (Sandbox Code Playgroud)


Len*_*bro 1

不,那不可能。您可以执行shell 脚本,在命令行上传递参数,然后它可以打印出数据,您可以从 Python 中解析这些数据。

但这并不是真正调用该函数。这仍然是使用选项执行 bash 并在 stdio 上返回一个字符串。

这可能会做你想做的事。但这可能不是正确的方法。Bash 不能做很多 Python 不能做的事情。而是用 Python 实现该函数。