在ruby中运行系统命令并与之交互
发布时间:2020-12-16 19:14:47 所属栏目:百科 来源:网络整理
导读:我需要在命令行上运行一个命令,要求用户响应.万一它有助于命令是: gpg --recipient "Some Name" --encrypt ~/some_file.txt 当你运行它时,它警告某事然后问: Use this key anyway? (y/N) 回答’y’让它正确完成.我一直试图使用open4 gem,但我无法正确指定
我需要在命令行上运行一个命令,要求用户响应.万一它有助于命令是:
gpg --recipient "Some Name" --encrypt ~/some_file.txt 当你运行它时,它警告某事然后问:
回答’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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |