1

我正在尝试使用 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)?

4

1 回答 1

0

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

于 2016-02-18T17:56:44.640 回答