编辑:请,请,请阅读前回答这个帖子的底部列出的两个要求.人们不断发布他们的新宝石和图书馆等等,这显然不符合要求.
有时我想非常便宜地将一些命令行选项破解成一个简单的脚本.一个有趣的方法,没有处理getopts或解析或类似的东西,是:
...
$quiet = ARGV.delete('-d')
$interactive = ARGV.delete('-i')
...
# Deal with ARGV as usual here, maybe using ARGF or whatever.
Run Code Online (Sandbox Code Playgroud)
它不是普通的Unix选项语法,因为它将接受选项非选项命令行参数,如" myprog -i foo bar -q",但我可以忍受.(有些人,比如Subversion的开发人员,更喜欢这个.有时我也会这样做.)
只是存在或不存在的选项不能比上述更简单地实现.(一个赋值,一个函数调用,一个副作用.)是否有一种同样简单的方法来处理带参数的选项,例如" -f filename "?
我之前没有说过的一点,因为直到Trollop的作者提到图书馆符合"一个[800行]文件"之前我才清楚,我的目的不仅仅是清洁语法,但对于具有以下特征的技术:
整个代码可以包含在脚本文件中(不会压倒实际的脚本本身,可能只有几十行),因此可以bin使用标准的Ruby 1.8在任何系统上删除dir中的单个文件.[5-7]安装并使用它.如果你不能编写一个没有require语句的Ruby脚本,并且解析几个选项的代码在十几行左右,那么你就不能满足这个要求.
代码很小而且非常简单,人们可以记住足够的代码来直接输入代码来完成这一操作,而不是从其他地方剪切和粘贴.想想你在一个没有互联网访问权限的防火墙服务器的控制台上的情况,你想把一个快速的脚本拼凑起来供客户使用.我不了解你,但是(除了上面的要求失败之外)记住甚至45行的简化微型optparse也不是我要做的事情.
ruby ×1