我正在製作一個python腳本,我需要使用一些設置在bash shell腳本中的環境變量。是否有任何模塊可以讀取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腳本並利用在內部發現的環境變量?目前我正在手工做這件事,這有點痛苦。
如果沒有這樣的模塊存在這樣做的正是我想要的東西,有沒有更Python(閱讀:容易/短)的手動分析一般文件的方式,現在我這樣做:
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
該腳本真的只是評論和'出口var =價值'線,或可能有其他東西在那裏? – abarnert
特別是,在仔細閱讀這個之後......你需要'BUILDDIR = $ PWD'來評估shell的方式嗎?換句話說,BUILDDIR最終應該是'/ Users/Mike/src/testing'還是'$ PWD'? – abarnert
@abarnert - 如你所述,還有其他的東西。我只是想更新我的'parse_bash_script()'方法,用於「BUILDDIR = $ PWD」等「特殊情況」...在我走下那條路線之前,我想看看我是否錯過了一些更好的選項 – Mike