Anu*_*pam 6 ruby gem automation default prompt
我经常使用Ruby gem clean命令来保持本地gem存储库的形状.
但是,由于依赖性问题,该命令多次返回一个提示,例如:
XXXXX-1.0.6 depends on [YYYYYY (~> 0.8.4)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn]
Run Code Online (Sandbox Code Playgroud)
虽然这很简单,但它需要手动干预(对于[Yn]响应),因此这使我无法创建一个简单的cron脚本来自动执行此过程.
有关如何默认响应这些gem提示的任何想法?
你应该有一个yes命令,OSX版本有这个说:
YES(1) BSD General Commands Manual YES(1)
NAME
yes -- be repetitively affirmative
SYNOPSIS
yes [expletive]
DESCRIPTION
yes outputs expletive, or, by default, ``y'', forever.
HISTORY
The yes command appeared in 4.0BSD.
4th Berkeley Distribution June 6, 1993 4th Berkeley Distribution
Run Code Online (Sandbox Code Playgroud)
所以也许这会奏效:
yes n | gem clean
Run Code Online (Sandbox Code Playgroud)
gem clean可能是直接从终端读取而不是标准输入.在这种情况下,你可能会expect踢:
Expect是一个根据脚本与其他交互式程序"对话"的程序.在脚本之后,Expect知道程序可以期待什么以及正确的响应应该是什么.解释语言提供分支和高级控制结构来指导对话.此外,用户可以在需要时直接进行控制和交互,然后将控制权返回给脚本.
因此,您可以根据需要编写一个expect脚本,以"y"或"n"响应预期的提示.
这应该有效:
echo|gem clean
Run Code Online (Sandbox Code Playgroud)
它的作用就像在提示符下按回车键一样。'y' 是默认值,它将运行gem clean至完成。