gpt4 book ai didi

python - 我可以在 Python 中运行 bash 脚本并保留它导出的任何环境变量吗?

转载 作者:太空狗 更新时间:2023-10-30 02:04:13 26 4
gpt4 key购买 nike

标题几乎说明了一切..

假设我有一个 bash 脚本:

#!/bin/bash

# do some magic here, perhaps fetch something with wget, and then:
if [ "$VAR1" = "foo" ]; then
export CASEVARA=1
fi
export CASEVARB=2

# and potentially many other vars...

如何从 python 运行此脚本并检查设置了哪些环境变量。理想情况下,我想将它们“反向继承”到运行 Python 的主环境中。

这样我就可以访问它们了

import os

# run the bash script somehow

print os.environ['CASEVARA']

最佳答案

当然!它只需要一些技巧:

variables = subprocess.Popen(
["bash", "-c", "trap 'env' exit; source \"$1\" > /dev/null 2>&1",
"_", "yourscript"],
shell=False, stdout=subprocess.PIPE).communicate()[0]

这将运行您未修改的脚本,并在不同的行上以 foo=bar 的形式为您提供所有导出的变量。

在受支持的操作系统(如 GNU)上,您可以trap 'env -0' exit 获取 \0 分隔的变量,以支持多行值。

关于python - 我可以在 Python 中运行 bash 脚本并保留它导出的任何环境变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22969121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com