使用Ruby

时间:2016-03-01 15:03:36

标签: ruby

我有一个Rails应用程序,并尝试通过CLI与Jav​​a程序进行通信。

当我使用system运行Java代码时:

system "java askQuestion"

它会提示用户输入并等待答案,例如“你的年龄是多少?”

我想从变量中传入一个值,并捕获输出。

如何与CLI交互并运行命令?

我做了研究,但我找不到任何东西,或者我错过了正确的搜索词。

解决方案:IO.popen

更新 - >  我在这里找到了我想要的东西并分享也许可以帮助别人,http://ruby.bastardsbook.com/chapters/external-programs/

1 个答案:

答案 0 :(得分:0)

Kernel#system只是在子shell中执行命令,返回进程启动的结果(true / false)。

要捕获输出,请使用backticks (or %x||)

要与shell进行交互,可以使用IO#popen,但在您的情况下,我会坚持执行

output = `echo 37 | java askQuestion`

以上内容将echo(在此特定情况下为37)的输出传递给Java进程。 Java进程的响应将存储在output变量中。