我有一个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"))
有没有办法可以做到这一点?
答案 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 + "'")