【问题标题】:How to read variable exported from shell script , in python如何在python中读取从shell脚本导出的变量
【发布时间】:2017-05-29 12:45:21
【问题描述】:

我有两个脚本
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'

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

【问题讨论】:

  • 为什么不能使用脚本标准输出?使用环境变量会很困难,因为获得另一个进程环境变量有点困难。你可以在那里阅读更多信息:stackoverflow.com/questions/5905574/…

标签: python python-3.x shell


【解决方案1】:

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

要获得预期的输出,请尝试这样的 shell 脚本:

#!/bin/ksh

TEST="Hello"
export TEST
python demo.py

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多