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

前端之家收集整理的这篇文章主要介绍了在ruby中运行系统命令并与之交互前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要在命令行上运行一个命令,要求用户响应.万一它有助于命令是:
  1. gpg --recipient "Some Name" --encrypt ~/some_file.txt

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

Use this key anyway? (y/N)

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

  1. Open4::popen4(cmd) do |pid,stdin,stdout,stderr|
  2. stdin.puts "y"
  3. stdin.close
  4.  
  5. puts "pid : #{ pid }"
  6. puts "stdout : #{ stdout.read.strip }"
  7. puts "stderr : #{ stderr.read.strip }"
  8. end

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

解决方法

处理这些情况的Unix方法expect,Ruby附带 built-in support
  1. require 'pty'
  2. require 'expect'
  3.  
  4. PTY.spawn("your command here") do |reader,writer|
  5. reader.expect(/Use this key anyway/,5) # cont. in 5s if input doesn't match
  6. writer.puts('y')
  7. puts "cmd response: #{reader.gets}"
  8. end

猜你在找的Ruby相关文章