【发布时间】: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 时,我会收到另一个确认信息,我应该回答“忽略/取消”(i 或c)。如何正确接听外线电话?第一个“是”,第二个“忽略”(y 然后i)?
【问题讨论】:
标签: ruby stdout stdin disk-partitioning