在ruby中运行系统命令并与之交互

我需要在命令行上运行一个命令,要求用户响应.万一它有助于命令是:
gpg --recipient "Some Name" --encrypt ~/some_file.txt

当你运行它时,它警告某事然后问:

Use this key anyway? (y/N)

回答’y’让它正确完成.我一直试图使用open4 gem,但我无法正确指定’y’.这是我尝试过的:

Open4::popen4(cmd) do |pid,stdin,stdout,stderr|
  stdin.puts "y"
  stdin.close

  puts "pid        : #{ pid }"
  puts "stdout     : #{ stdout.read.strip }"
  puts "stderr     : #{ stderr.read.strip }"
end

我究竟做错了什么?我正在做什么甚至可能?

解决方法

处理这些情况的Unix方法expect,Ruby附带 built-in support
require 'pty'
require 'expect'

PTY.spawn("your command here") do |reader,writer|
  reader.expect(/Use this key anyway/,5) # cont. in 5s if input doesn't match
  writer.puts('y')
  puts "cmd response: #{reader.gets}"
end

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...