2014-07-22 171 views
1

我对Python很陌生,试图找到一种方法来设置几个shell env变量,然后执行一个shell脚本。设置Env变量并从Python脚本运行Shell脚本

subprocess模块能够发送多个shell命令并捕获输出吗?

这对我来说并不清楚,因为每个spawn都会导致一个新的shell线程不会有以前的env变量。

此外,使用popencheck_output是否合适?

基本上我想要做的是:

$ setenv a b 
$ setenv c d 
$ setenv e f 
$ check_status.sh > log.log 
$ grep "pattern" log.log 

check_status.sh必须定义才能正常运行上面的ENV变量,它也必须是shell脚本(即我无法翻译check_status.sh到蟒蛇)。

我会感谢您的意见和输入。

+0

@favoretti还没有尝试过,只是想办法。也没有寻找代码解决方案,只是你的想法问题陈述。 –

+0

@favoretti虽然[“与另一个命令交互”](http://pymotw.com/2/subprocess/)部分似乎很有趣。 –

+0

你见过这个吗? http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python?请注意,它表示子进程自动继承设置值,所以简短答案是肯定的,这是可能的。 :) – favoretti

回答

0

subprocess每次都会创建一个线程。您可以使用popen来执行shell命令。使用分号作为分隔符。如os.popen('setenv a b;set env c d')

希望它有帮助。

+0

谢谢你的回答,我会试一试,明天让你知道。 –