我有一个Rails应用程序,并尝试通过CLI与Java程序进行通信。
当我使用system
运行Java代码时:
system "java askQuestion"
它会提示用户输入并等待答案,例如“你的年龄是多少?”
我想从变量中传入一个值,并捕获输出。
如何与CLI交互并运行命令?
我做了研究,但我找不到任何东西,或者我错过了正确的搜索词。
解决方案:IO.popen
更新 - > 我在这里找到了我想要的东西并分享也许可以帮助别人,http://ruby.bastardsbook.com/chapters/external-programs/
答案 0 :(得分:0)
Kernel#system
只是在子shell中执行命令,返回进程启动的结果(true
/ false
)。
要捕获输出,请使用backticks (or %x||
)。
要与shell进行交互,可以使用IO#popen
,但在您的情况下,我会坚持执行
output = `echo 37 | java askQuestion`
以上内容将echo
(在此特定情况下为37)的输出传递给Java进程。 Java进程的响应将存储在output
变量中。