【问题标题】:Answer questions sequence using Open3.popen3 in Ruby在 Ruby 中使用 Open3.popen3 回答问题序列
【发布时间】:2016-05-31 00:10:07
【问题描述】:

我正在尝试使用 Ruby 回答来自外部脚本的不同问题。

这是工作代码

Open3.popen3("cp -i 1 0") {|i,o,e,p|
  i.write "y\n"
  i.close
  o.read.split("\n").each {|l| puts l }
}

但是,如果外部命令问一个问题,然后再问另一个问题,如果第一个答案是真的呢?

示例代码

Open3.popen3("/sbin/parted /dev/sda rm 1") {|i,o,e,p|
  i.write "n\n"
  i.close
  o.read.split("\n").each { |l| puts l }
  exit_status = p.value
  puts "Exit status: " + (exit_status.success? ? 'succeeded' : 'failed')
}

它总是失败。不管是回答y\n 还是n\n。当我在控制台中点击n 时,parted 停止并且分区保持原样。当我点击y 时,我会收到另一个确认信息,我应该回答“忽略/取消”(ic)。如何正确接听外线电话?第一个“是”,第二个“忽略”(y 然后i)?

【问题讨论】:

    标签: ruby stdout stdin disk-partitioning


    【解决方案1】:

    在这种情况下,i.write "y\ni\n" 不工作吗?对我有用..

    【讨论】:

    • 它不起作用。可能有另一种方法可以做到这一点吗?
    猜你喜欢
    • 2023-04-07
    • 2017-02-12
    • 2014-10-09
    • 2015-07-09
    • 2013-02-08
    • 1970-01-01
    • 2015-10-22
    • 2016-12-25
    • 2017-02-18
    相关资源
    最近更新 更多