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