python - 如何在python中读取从shell脚本导出的变量

标签 python python-3.x shell

我有两个脚本
1.demo.ksh
2.demo.py

在 demo.ksh 中,我将变量导出为

#!/bin/ksh
TEST="Hello"
export TEST

在 demo.py 中,我正在执行 demo.ksh 并尝试将导出的值读取为 ..

import os
import subprocess
cmd='. demo.ksh' #I even tried 'demo.py' (no .)
subprocess(cmd,shell=True,stdout=subprocess.PIPE)
print(os.getenv('TEST'))
print(os.environ['TEST'])

我期待着

Hello
Hello

但是得到

None
KeyError: 'TEST'

虽然这是一个简单的练习。我找不到正确的解决方案。请帮助我我的代码有什么问题。

最佳答案

导出变量使其可用于生成的 shell 进程的子进程,但不可用于父进程(即您的 Python 程序)。

要获得预期的输出,请尝试使用如下 shell 脚本:

#!/bin/ksh

TEST="Hello"
export TEST
python demo.py

您可以通过 STDOUT 与子进程通信。为此,subprocess.check_output可能会有用。

关于python - 如何在python中读取从shell脚本导出的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44242860/

相关文章:

python - 从 python 中的其他属性定义中访问类属性

Python:使用可哈希对象访问字典失败

arrays - 如何比较两个数组的内容?如果条件满足,我们如何指向数组之一上的特定线?

linux - 在 Linux 中重新启动文件更改进程

python - Django 框架 : Object does not display on web page for specific pk

python - 在 numpy 中合并矩阵

python - 我们如何从指定坐标的邻域值中提取最大值?

python - 在 Python 中设置字典值,同时从最大允许总值中减去

linux - 如何回显变量?

python - 基于多个列值输出多个文件 pandas python