2011-12-16 19 views
0

我試圖在紅寶石。 我有一個shell腳本,我可以傳遞一個命令,在設置了一些初始環境變量後,shell將執行該命令。因此,在Ruby代碼我這樣做..紅寶石沒有顯示內部過程的輸出

# ruby code 
my_results = `some_script -allow username -cmd "perform_action"` 

的問題是,因爲腳本「some_script」在它自己的環境中運行「perform_action」,我沒有看到結果我當輸出變量「 my_results」。因此,在腳本處理命令「perform_action」之前,「my_results」的ruby提供了一些初始註釋。

任何線索我可以如何獲得perform_action輸出到「my_results」?

謝謝。

+0

'因爲腳本「some_script」在自己的環境中運行「perform_action」,所以當我輸出變量「my_results」時沒有看到結果。如果你的意思是`some_script`實際上不打印結果`perform_action`,你沒有辦法做到這一點。如果你的意思是別的,嗯? – sepp2k 2011-12-16 01:06:19

回答

0

反引號將只捕獲stdout。如果你重定向stdout,或者寫入任何其他句柄(如stderr),它將不會顯示在其輸出中;否則,它應該。無論是否進入標準輸出都不依賴於環境,只能在重定向或直接寫入不同的句柄。

試一下,看看你的腳本是否實際打印從外殼到stdout:

$ some_script -allow username -cmd "perform_action" > just_stdout.log 
$ cat just_stdout.log 

在任何情況下,這不是一個Ruby的問題。 (或者至少不是我正確理解你的意思。)你會得到任何語言的相同答案。