【问题标题】:Ruby interactive shell commandsRuby 交互式 shell 命令
【发布时间】:2016-05-09 16:11:32
【问题描述】:

我想制作一个从 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)

等到用户点击介绍。我应该如何管理这个?我应该在提出问题之前打印问题吗?

【问题讨论】:

    标签: ruby shell


    【解决方案1】:

    原文: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
    

    这会等待生成的进程显示“应用程序名称是什么”,并且当它看到打印定义的字符串(新行)时。

    【讨论】:

    • +1 用于理解一个非常令人困惑的问题,并用于使用我以前从未见过的两个标准库!
    猜你喜欢
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    相关资源
    最近更新 更多