将python变量的值赋给python脚本中的bash变量

时间:2016-06-27 06:20:47

标签: python bash pexpect

我有一个python脚本,其中包含一个从文件中读取值的变量。

我想要做的是,将此值保存为bash变量,以便我可以在我的python脚本中使用pexpect。

这就是我想要的方式:

#!/usr/bin/python
import pexpect

a="value read from a file"
pexpect.run("bash_a='value of a'")
print(pexpect.run("ps -ef|grep $bash_a"))

有没有办法可以做到这一点?

2 个答案:

答案 0 :(得分:2)

如果你真的想在环境中放置一个变量,那就是os.environ

>>> import os
>>> os.environ['bar'] = "foo"
>>> os.system("bash -c 'echo \"$bar\"'")
foo
0

这显然需要在启动任何需要此变量的子进程之前发生。

通过pexpect获取流程列表似乎完全是解决问题的错误方法,但也许您的真实场景更有意义。

此外,ps -ef | grep foo将匹配grep foo进程的进程ID。你在Python中进行过滤要好得多。

for proc in subprocess.check_output(['ps', '-ef']).split('\n'):
    if 'value of a' in proc:
        print(proc)

答案 1 :(得分:0)

您可以执行类似添加两个字符串的操作:

pexpect.run("bash_a='" + a + "'")