如何在Ruby中拆分参数字符串Bash样式?

我正在为一个项目创建一个简单的 shell,我希望像在 Bash中一样解析参数字符串.

foo bar "hello world" fooz

应该成为:

["foo","bar","hello world","fooz"]

等等.到目前为止,我一直在使用CSV :: parse_line,将列分隔符设置为“”和.compacting输出.问题是我现在必须选择是否要支持单引号或双引号. CSV不支持多个分隔符.

Python有一个模块,正好称为shlex:

>>> shlex.split("Test 'hello world' foo")
['Test','hello world','foo']
>>> shlex.split('Test "hello world" foo')
['Test','foo']

是否有任何隐藏的内置Ruby模块可以做到这一点?任何解决方案的建议将不胜感激.

解决方法

Ruby有模块 Shellwords

require "shellwords"

Shellwords.shellsplit('Test "hello world" foo')
# => ["Test","foo"]

'Test "hello world" foo'.shellsplit
# => ["Test","foo"]

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...