编辑: 请,求你了,求你了阅读这篇文章的底部列出的两个要求,然后再回复。人们不断地发布他们的新宝石和图书馆之类的东西,这显然不符合要求。
有时候,我想把一些命令行选项编写成一个简单的脚本。一种有趣的方法是,不用处理 getopts 或解析之类的东西:
...
$quiet = ARGV.delete('-d')
$interactive = ARGV.delete('-i')
...
# Deal with ARGV as usual here, maybe using ARGF or whatever.
这不是普通的 Unix 选项语法,因为它将接受选项非选项命令行参数,如“ myprog -i foo bar -q
”,但我可以接受。(有些人,比如 Subversion 开发人员,更喜欢这样做。有时候我也这么想。)
只存在或不存在的选项不能比上述方法实现得更简单。(一个任务,一个函数调用,一个副作用。)是否有同样简单的方法来处理带有参数的选项,例如“ -f
文件名”?
有一点我之前没有提到,因为直到特罗洛普的作者提到这个库适合“一个[800行]文件”,我才明白,我不仅在寻找干净的语法,而且在寻找一种具有以下特征的技术:
整个代码可以包含在脚本文件中(而不会淹没实际的脚本本身,实际的脚本本身可能只有几十行) ,这样就可以在使用标准 Ruby 1.8的任何系统的 bin
目录中删除单个文件。[5-7]安装和使用它。如果您不能编写一个没有必要语句的 Ruby 脚本,并且解析几个选项的代码不超过十几行,那么您就不符合这个要求。
代码很小,也很简单,人们可以记住足够多的代码,直接输入代码就可以了,而不需要从其他地方剪切和粘贴。想象一下这样一种情况: 你在一个没有互联网接入的防火墙服务器的控制台上,你想为客户端编写一个快速的脚本。我不知道你是怎么想的,但是(除了没有达到上面的要求之外)即使是记住45行简化的 microoptparse 也不是我想做的事情。