Ruby交互式shell命令

时间:2015-08-06 11:09:07

标签: ruby shell

我想创建一个从shell执行命令的ruby shell脚本。当shell命令需要用户的答案时会发生什么?

例如,创建一个新的播放框架应用程序:

play new calimero

~        _            _ 
~  _ __ | | __ _ _  _| |
~ | '_ \| |/ _' | || |_|
~ |  __/|_|\____|\__ (_)
~ |_|            |__/   
~
~ play! 1.2.7.2, http://www.playframework.org
~

~ The new application will be created in /home/anquegi/src/11paths/buildsdeb/toni_build/devops-tools/packaging/packwithruby/calimero
~ What is the application name? [calimero] ~   <=== here asks to the user

使用ruby shell脚本,我想向用户提示并获取它,ruby脚本等待它,我按回车键,它可以工作。

value = %x(play new calimero)

等待用户点击简介。我应该怎么做呢?我应该在问题出现前打印出来吗?

1 个答案:

答案 0 :(得分:2)

原文:https://stackoverflow.com/a/6488335/2724079

这也可以通过IO.expect

来完成
require 'pty'
require 'expect'

PTY.spawn("play new calimero") do |reader, writer|
  reader.expect(/What is the application name/)
  writer.puts("\n")
end

等待生成的进程显示&#34;什么是应用程序名称&#34;当它看到打印定义的字符串(新行)时。