我有两个脚本
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'
虽然这是一个简单的练习。我找不到正确的解决方案。请帮我解决我的代码有什么问题。
答案 0 :(得分:1)
导出变量使其可用于生成的shell进程的子进程,但不能用于父进程(即您的Python程序)。
要获得预期的输出,请尝试使用以下shell脚本:
#!/bin/ksh
TEST="Hello"
export TEST
python demo.py
您可以通过STDOUT与子进程通信。为此,subprocess.check_output
可能很有用。