如何在python中读取从shell脚本导出的变量

时间:2017-05-29 12:45:22

标签: python python-3.x shell

我有两个脚本
1. demo.ksh
2. demo.py

在demo.ksh中我将变量导出为

#!/bin/ksh
TEST="Hello"
export TEST
在demo.py中的

我正在执行demo.ksh并尝试将导出值读为..

import os
import subprocess
cmd='. demo.ksh' #I even tried 'demo.py' (no .)
subprocess(cmd,shell=True,stdout=subprocess.PIPE)
print(os.getenv('TEST'))
print(os.environ['TEST'])

我期待

Hello
Hello

但是

None
KeyError: 'TEST'

虽然这是一个简单的练习。我找不到正确的解决方案。请帮我解决我的代码有什么问题。

1 个答案:

答案 0 :(得分:1)

导出变量使其可用于生成的shell进程的子进程,但不能用于父进程(即您的Python程序)。

要获得预期的输出,请尝试使用以下shell脚本:

#!/bin/ksh

TEST="Hello"
export TEST
python demo.py

您可以通过STDOUT与子进程通信。为此,subprocess.check_output可能很有用。