3

我正在尝试运行@command需要用户输入的 bash 脚本 ( ),并且我正在尝试使用以下代码提供该脚本输入:

Open3.popen3(@command) 做 |stdin、stdout、stderr|
  stdin.write("y")
  标准输出.gets
结尾

这是脚本的一个想法:

exec sudo su -c "一些命令" $username

如果有人能告诉我我做错了什么,或者对如何以不同的方式实现这一点有任何建议,那将不胜感激。


另外,我可以像这样运行脚本:

@output = `#{@command}`

在这种情况下,我可以在运行我的应用程序的控制台中看到脚本输出的内容。如果无论如何要向该位置提供输入,那也可以。

4

2 回答 2

0

在这里得到了我的解决方案: 如何修复在 Ruby 中挂起的 popen3?

Open3.popen3(@command) 做 |stdin、stdout、stderr|
  stdin.puts "y\r\n"

  标准输出.each_line { |line| 放线}
  标准输入关闭
结尾
于 2013-06-14T22:08:57.187 回答
0
out_err, status = Open3.capture2e(@command, :stdin_data => "y\r\n")
print out_err
于 2014-11-30T09:58:18.410 回答