我为一个项目制作了一个简单的shell,并且我想让参数字符串像在Bash中一样被解析。如何在Ruby中分割参数字符串Bash风格?
foo bar "hello world" fooz
应该改为:
["foo", "bar", "hello world", "fooz"]
等。目前我一直在使用CSV::parse_line
,列分隔符设置为" "
和.compact
荷兰国际集团输出。问题是我现在必须选择是否要支持单引号或双引号。 CSV
不支持多个分隔字符。
Python有正是这种所谓的shlex
模块:
>>> shlex.split("Test 'hello world' foo")
['Test', 'hello world', 'foo']
>>> shlex.split('Test "hello world" foo')
['Test', 'hello world', 'foo']
是否有任何内置隐藏在Ruby中的模块,可以做到这一点?任何解决方案的建议,将不胜感激。
当然有:http://www.ruby-doc.org/stdlib-1.9.3/libdoc/shellwords/rdoc/Shellwords.html#method -C-shellsplit。 :) – squiguy