2011-12-16 46 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的问题。 (或者至少不是我正确理解你的意思。)你会得到任何语言的相同答案。