現在、python スクリプトを作成しています。bash シェル スクリプトで設定された環境変数を使用する必要があります。
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 でソースしてから、ビルドを行います。source ./this_script.sh
出力の管理を行うためにプロセス全体をpythonでラップしようとしているので、手動のステップを削除したいと思います。
私がやりたいのは、このスクリプトを 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