我希望能够得到一个Ruby方法或正则表达式,可以将命令行参数字符串分割成类似ARGV的数组。我的问题类似于这个问题,但是针对的是Ruby。
我正在为一个使用Trollop(尽管对于任何其他选项解析器都一样)处理命令行输入的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\""]