我需要在命令行上运行一个命令来请求用户响应。如果有帮助的话,命令是:
gpg --recipient "Some Name" --encrypt ~/some_file.txt
当您运行此命令时,它会发出警告,然后询问:
还用这个键吗? (是/否)
回答“y”让其正确完成。我一直在尝试使用打开4宝石但我无法让它正确指定“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 自带的内置支持 for:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)