编辑:请,请,在回复之前,请阅读这篇文章底部列出的两个要求。人们不断地发布他们的新的gem和库之类的东西,这显然不符合要求。
有时,我想非常便宜地将一些命令行选项编译到一个简单的脚本中。做这件事的一个有趣的方法是,不用处理getopts或解析或类似的事情:
...
$quiet = ARGV.delete('-d')
$interactive = ARGV.delete('-i')
...
# Deal with ARGV as usual here, maybe using ARGF or whatever.
它不完全是普通的Unix options语法,因为它可以接受选项的非选项命令行参数,比如"myprog -i foo bar -q
",但我可以接受。(有些人,比如Subversion开发人员,更喜欢这种方式。有时我也会这样做。)
只存在或不存在的选项不能比上面更简单地实现。(一次赋值,一次函数调用,一个副作用。)有没有一种同样简单的方法来处理带有参数的选项,比如"-f
文件名“?
编辑:
有一点我之前没有说过,因为直到Trollop的作者提到这个库适合“在一个800行的文件中”时,我才明白这一点,那就是我不仅要寻找干净的语法,还要寻找一种具有以下特征的技术:
RubyRuby1.8.5-7可以将整个代码包含在脚本文件中(而不会淹没实际的脚本本身,它可能只有几十行),这样用户就可以在任何安装了标准 1.8.5-7的系统上拖放bin
目录中的单个文件并使用它。如果您不能编写没有Require语句的Ruby脚本,并且解析几个选项的代码少于十几行,那么您就失败了,这段requirement.
https://stackoverflow.com/questions/897630
复制相似问题