我正在使用open3将STDIN
传递给程序,然后读取并解析STDOUT
。我的程序需要一个e0
,e1 e2
等形式的参数。
每次给出新的参数时,STDOUT
都会改变。我不知道如何解析第一个结果后将传递下一个参数作为下一个参数传递。这是我的代码:
require 'open3'
require 'state_machines'
#this is for the first command e0 only
cmd = ('./pos.tx')
status1 = ''
puts "Step 1: #{cmd}"
Open3.pipeline_rw(cmd) {|stdin, stdout, wait_thrs|
stdin.write "e0\n"
stdin.close
#
status1 = stdout.read
lines3 = status1.match(/Ee\s+(.*)\s+/)
@next_states = status1.match(/\d+/)
event = status1.match(/\s+\D+\s+\n/)
#puts lines3
puts @next_states
puts event
}
下一个参数存储在@next_states
中,可以是一个数字或多个数字。如何使用该数组的元素继续执行程序的下一部分并再次解析?