将下一个参数传递给“ STDIN”

时间:2018-07-11 12:27:38

标签: ruby popen3

我正在使用open3将STDIN传递给程序,然后读取并解析STDOUT。我的程序需要一个e0e1 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中,可以是一个数字或多个数字。如何使用该数组的元素继续执行程序的下一部分并再次解析?

0 个答案:

没有答案