Ruby包装器(open3) - 如何在脚本进行过程中捕获实时用户输入?

时间:2018-05-25 16:34:03

标签: ruby pipe stdin

我试图编写一个包装脚本来将4个相关脚本的功能联系在一起。通常我们必须运行这4个脚本才能达到某种状态,但我想将这4个脚本包装成1个。

但是,所有这些脚本都需要用户输入 - 最值得注意的是,y / n会在几个执行阶段提示。我仍然希望用户能够回答这些问题,并让当前运行的脚本做出相应的响应。

但是,在执行脚本期间,我没有看到任何方式来自用户。所有示例都显示stdin在执行之前传递给脚本,例如:

o, s = Open3.capture2("factor", :stdin_data=>"42")
p o #=> "42: 2 3 7\n"

我想知道管道的定义是否意味着它不能来自真正的标准输入,例如键盘,但必须在执行前传入(管道输入)。这是正确的假设吗?如果是这样 - 有没有办法用ruby包装脚本,以便他们仍然可以接受并响应用户输入?我也试过反复无效,我开始怀疑这是不可能的。

0 个答案:

没有答案