2017-09-26 26 views
2

我從我的bash腳本調用Python腳本,並且需要來自所述Python腳本計算的結果。我試着通過幾種方式,設置環境變量一個是在this問題的答案做出來,一個是像這樣:從父bash腳本中不能使用Python創建環境變量

table_name = get_table_name(feed) 
subprocess.Popen(['export', 'TABLE_NAME='+table_name], shell=True) 

我所說的Python腳本從我的bash文件像這樣:

./auto_load.py FEED-NAME 2017-09-07 
echo "Table name is" ${TABLE_NAME} 

由於環境變量是由bash腳本觸發的進程創建的,它不應該在bash腳本中可用嗎?

回答

1

子進程無法更改其父進程的環境。這根本不可能。

您可以通過讓Python腳本輸出表名並讓Bash腳本捕獲輸出來達到所需的效果。

# Python 
table_name = get_table_name(feed) 
print(table_name) 

# Bash 
TABLE_NAME=$(./auto_load.py FEED-NAME 2017-09-07) 
echo "Table name is $TABLE_NAME" 
+0

對於它的價值,我的Python腳本輸出了很多,所以我修改了猛砸略是''''TABLE_NAME ='/ auto_load.py FEED-NAME 2017年9月7日。| grep databasename''''其中'databasename'是完全限定位置'databasename.tablename'的數據庫部分。我確定存在一種不同的方法,比如'tail'。 – Nanor