我需要编写一个python脚本来启动shell脚本并在脚本完成后导入环境变量。
想象你有一个shell脚本“a.sh”:
export MYVAR="test"
在python中我想做类似的事情:
import os
env={}
os.spawnlpe(os.P_WAIT,'sh', 'sh', 'a.sh',env)
print env
并获得:
{'MYVAR'="test"}
这可能吗?
答案 0 :(得分:5)
不,对子进程中的环境变量所做的任何更改都会保留在该子进程中。 (据我所知,就是这样)当子进程终止时,它的环境就会丢失。
我建议让shell脚本将其环境或至少你关心的变量打印到其标准输出(或标准错误,或者它可以将它们写入文件),并且你可以读取该输出来自Python。
答案 1 :(得分:0)
我同意大卫的帖子。
Perl有一个Shell::Source模块可以做到这一点。它的工作原理是在附加了env
的子进程中运行所需的脚本,该子进程生成由=
符号分隔的变量值对列表。您可以解析此问题并将环境“导入”到您的流程中。如果您需要这种行为,该模块值得一看。