在Ruby中使用Open3.popen3按顺序回答问题

在Ruby中使用Open3.popen3按顺序回答问题,ruby,stdout,stdin,disk-partitioning,Ruby,Stdout,Stdin,Disk Partitioning,我试图用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

我试图用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停止,partition保持原样。当我点击
y
时,我收到另一条确认信息,我应该回答“忽略/取消”(
I
c
)。如何正确接听外部电话?第一个“是”,第二个“忽略”(
y
然后
i
)?

在这种情况下,
i.写“y\ni\n”
行吗?对我有用。

那样的话,
i.写“y\n\n”
行吗?对我有用。

它不起作用。也许还有其他方法可以做到这一点?它不起作用。也许还有其他方法可以做到这一点?