我从我的bash脚本调用Python脚本,我需要来自所述Python脚本计算的结果。我试过通过几种方式设置环境变量来做到这一点,一个是this问题的答案,一个是这样的:
table_name = get_table_name(feed)
subprocess.Popen(['export', 'TABLE_NAME='+table_name], shell=True)
我从我的bash文件中调用Python脚本,如下所示:
./auto_load.py FEED-NAME 2017-09-07
echo "Table name is" ${TABLE_NAME}
由于环境变量是从bash脚本触发的进程创建的,所以它不应该在bash脚本中可用吗?
答案 0 :(得分: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"