2017-06-22 122 views
0

我想要一個處理環境變量的一致方法。比如我有一個文件.env.development包含:用空格導出環境變量

# Some comment to be ignored 
VAR0='some""" value0' 
VAR1="some value1" 
VAR2=ignored_value 
VAR2=some_value2 

從bash shell中,我可以設置shell變量(而不是環境變量):

$ source .env.development 
$ echo $VAR0 
some""" value0 
$ echo $VAR1 
some value1 

我也想使這些變量可用子進程從shell啓動:

script.py

#!/usr/bin/python 
import os 
print("VAR0 is:", os.environ.get("VAR0") 

因此我需要導出這些變量。使用下面的接近,但保留了引號需要允許採購文件:

$ IFS=$'\n' && export $(grep -v ^# .env.development | xargs -0) && unset IFS && ./script.py 
('VAR0 is:', '\'some""" value0\'') 

我希望得到的輸出:

('VAR0 is:', 'some""" value0') 

回答

0

可以忽略的grep,xargs的和IFS,並使用set -asource

$ set -a && source .env.development && set +a && ./script.py 
('VAR0 is:', 'some""" value0')