在Ruby命令行,我想能够:运行自定义环境
- 运行命令行(通过壳)
- 捕获两个输出和错误(优选为单流),而无需使用
>2&1
(从而未能在这里的一些命令) - 运行额外enviornment变量(不修改Ruby程序本身的环境)
我了解到,Open3
允许我做1和2
cmd = 'a_prog --arg ... --arg2 ...'
Open3.popen3("#{cmd}") { |i,o,e|
output = o.read()
error = e.read()
# FIXME: don't want to *separate out* stderr like this
repr = "$ #{cmd}\n#{output}"
}
我还了解到,popen允许你传递一个环境,但不指定命令行的时候。
如何编写完成这三项功能的代码?
...
换句话说,什么是Ruby相当于下面的Python代码吗?
>>> import os, subprocess
>>> env = os.environ.copy()
>>> env['MYVAR'] = 'a_value'
>>> subprocess.check_output('ls -l /notexist', env=env, stderr=subprocess.STDOUT, shell=True)
'FIXME'现在是一个单独的问题:http://stackoverflow.com/questions/5917993 – 2011-05-06 23:22:06