在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