首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何像shell一样拆分字符串以填充ARGV?

如何像shell一样拆分字符串以填充ARGV?
EN

Stack Overflow用户
提问于 2011-05-20 13:57:27
回答 1查看 1.4K关注 0票数 9

我想要一个Ruby方法或一个正则表达式,它允许我将一个命令行参数字符串拆分为一个类似ARGV的数组。我问的是类似于this question,但用的是Ruby语言。

我正在为一个Ruby程序编写单元测试,该程序使用Trollop处理命令行输入(尽管这个问题对于任何其他选项解析器都是一样的)。

我想要测试的方法如下所示:

代码语言:javascript
复制
def parse_args(args)
  Trollop::options(args) do
    # ... parse options based on flags
  end
end

在我的程序中,我调用parse_args(ARGV)。在我的测试中,我认为我可以只传递一个空格分隔的字符串,但这不是ARGV的行为。比较以下内容:

代码语言:javascript
复制
./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\""]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-20 14:34:45

如果你使用的是1.9,那就是Shellwords。如果您使用的不是1.9,但有Rails,那么您将从Rails获得Shellwords。在这两种情况下,都可以像POSIX shell一样使用Shellwords.shellwords解析字符串:

代码语言:javascript
复制
>> Shellwords.shellwords("Where is 'pancakes house'?")
=> ["Where", "is", "pancakes house?"]

如果您没有Rails或1.9,那么您可能只需要从Rails获取shellwords.rb并使用它。

Ruby :看起来Shellwords 1.8中是可用的(谢谢Michael Khol.)。我得到的结果是模棱两可的,关于哪个特定的版本有它。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6067993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档