我现在正在制作一个 python 脚本,我需要使用一些在 bash shell 脚本中设置的环境变量。
bash 脚本类似于:
#! /bin/sh
#sets some names:
export DISTRO="unified"
#export DISTRO="other"
#number of parallel builds
export BB_NUM_THREADS=2
#set build dir
export BUILDDIR=$PWD
通常,我只会在 bash 中获取此脚本,然后进行构建。我正在尝试将 python 包裹在整个过程中以对输出进行一些管理,因此我想删除手动source ./this_script.sh
步骤。
我想要做的是从 python 中读取这个脚本,然后os.environ
用来设置其中的变量。(我知道这不会影响父级,但只会影响当前正在运行的 Python 实例,这很好)
因此,为了让我的工作更轻松,我试图找出是否有任何模块可以“解析”bash 脚本并利用其中的环境变量?目前我正在手动执行此操作,这有点痛苦。
如果不存在这样的模块来完全满足我的要求,那么是否有一种更 Pythonic(阅读:更简单/更短)的方式来手动解析文件,现在我正在这样做:
def parse_bash_script(fn):
with open(fn) as f:
for line in f:
if not line[:1] == '#': #ignore comments
if "export" in line:
line = line.replace(" ","").strip()
var = line[6:line.find("=")]
val = line[line.find("=")+1:len(line)]
if "\"" in val:
val = val[1:-1]
os.environ[var]=val