还有另一种使用方法subprocess
,它不依赖于设置环境。不过,还有更多代码。
对于如下所示的 shell 脚本:
#!/bin/sh
myvar="here is my variable in the shell script"
function print_myvar() {
echo $myvar
}
您可以检索变量的值,甚至可以在 shell 脚本中调用函数,如以下 Python 代码所示:
import subprocess
def get_var(varname):
CMD = 'echo $(source myscript.sh; echo $%s)' % varname
p = subprocess.Popen(CMD, stdout=subprocess.PIPE, shell=True, executable='/bin/bash')
return p.stdout.readlines()[0].strip()
def call_func(funcname):
CMD = 'echo $(source myscript.sh; echo $(%s))' % funcname
p = subprocess.Popen(CMD, stdout=subprocess.PIPE, shell=True, executable='/bin/bash')
return p.stdout.readlines()[0].strip()
print get_var('myvar')
print call_func('print_myvar')
请注意,两者shell=True
都应设置以便按CMD
原样处理要处理的 shell 命令,并设置executable='bin/bash'
为使用进程替换,默认情况下不支持/bin/sh
。