从bash-python-bash传递变量

从bash-python-bash传递变量,python,bash,variables,ubuntu,Python,Bash,Variables,Ubuntu,为了使用对数函数,我使用export将变量$var1从bash传递到python脚本。经过计算,我使用了 os.environ['var1']=str(result) 将结果发送回bash脚本。 但是,bash仍然显示未修改的值 您可以查看os.putenv(key,value)函数,也许它可以帮助您。 尽管如文件所述: 当支持putenv()时,对os.environ中的项的赋值将自动转换为对putenv()的相应调用;但是,对putenv()的调用不会更新os.environ,因此实际

为了使用对数函数,我使用export将变量
$var1
从bash传递到python脚本。经过计算,我使用了

  os.environ['var1']=str(result)
将结果发送回bash脚本。
但是,bash仍然显示未修改的值

您可以查看
os.putenv(key,value)
函数,也许它可以帮助您。
尽管如文件所述:

当支持putenv()时,对os.environ中的项的赋值将自动转换为对putenv()的相应调用;但是,对putenv()的调用不会更新os.environ,因此实际上最好将其分配给os.environ的项

编辑:
Moooeeep在我之前一分钟就考虑过了,但是您更改的变量只适用于当前流程。在这种情况下,我可以看到两种解决方案:
-将数据写入文件并使用bash脚本读取它

-直接从python中调用bash脚本,这样bash进程将继承修改后的变量。

它仍然给出相同的结果。您是否将该代码放入
try:[…]语句中,除了:[…]
语句?也许在设置env变量时出现了错误,而您没有意识到这一点,因为您的块捕获了每个异常。实际上,我不确定您是否可以修改这样的变量。因为它为当前进程而不是父进程更改它。将数据写入文件并在bash脚本中读取可能是个好主意。这可能是因为子进程中环境变量的更改不会影响父shell?最好的选择是
打印结果
并在bash中捕获Python的输出。实际上,这一切都取决于脚本的工作方式。bash脚本是否等待python脚本完成?或者你会单独启动它们吗?