【发布时间】:2011-05-20 05:57:26
【问题描述】:
我想要一个 Ruby 方法或一个正则表达式,它可以让我将一串命令行参数拆分成一个类似 ARGV 的数组。我要问的是类似于this question,但在 Ruby 中。
我正在为一个使用 Trollop 处理命令行输入的 Ruby 程序编写单元测试(尽管这个问题对于任何其他选项解析器都是一样的)。
我要测试的方法是这样的:
def parse_args(args)
Trollop::options(args) do
# ... parse options based on flags
end
end
在我的程序中,我调用parse_args(ARGV)。在我的测试中,我认为我可以只传递空格分割的字符串,但这不是 ARGV 的行为。比较以下:
./argv_example.rb -f -m "Hello world" --extra-args "-vvv extra verbose"
=> ["-f", "-m", "Hello world", "--extra-args", "-vvv extra verbose"]
'-f -m "Hello world" --extra-args "-vvv extra verbose"'.split
=> ["-f", "-m", "\"Hello", "world\"", "--extra-args", "\"-vvv", "extra", "verbose\""]
【问题讨论】:
标签: ruby string command-line