【发布时间】:2015-11-12 18:00:08
【问题描述】:
我正在调用一个导出一些变量的 bash 脚本,我找到了一种获取这些变量的方法并且它正在工作,一旦我尝试将 args 添加到我的 bash 脚本中它就会失败。 这是我的python脚本的一部分:
bash_script = "./testBash.sh"
script_execution = Popen(["bash", "-c", "trap 'env' exit; source \"$1\" > /dev/null 2>&1",
"_", bash_script], shell=False, stdout=PIPE)
err_code = script_execution.wait()
variables = script_execution.communicate()[0]
这是我的示例 Bash 脚本:
export var1="test1"
export var2=$var1/test2
echo "this is firsr var: var1=$var1"
echo "this is the second var: var2=$var2"
一旦我将bash_script = "./testBash.sh" 更改为bash_script = "./testBash.sh test test"
我没有将 bash 脚本中导出的变量返回到 Python 脚本中的 variables 变量中。
上面提供的是一个示例,当然我的真实脚本要大得多。
【问题讨论】:
-
我认为您无法以合理的便携方式自动恢复环境。如果适合您,您可以做的是使用一个系统,您的脚本调用一个回调脚本来记录环境并将其传输到原始脚本(或者只是让您的 shell 脚本将环境转储到您可以读取的文件中,甚至通过
stdout)。 -
您在
variables中得到了什么? -
所有环境变量的列表,包括我在 bash 脚本中导出的环境变量
-
那有什么问题?
标签: python bash python-2.7 variables subprocess