Я создаю простую оболочку для проекта, и я хочу, чтобы строки аргументов разбирались так же, как в Bash.Как разбить строку аргумента Bash в Ruby?
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 -с-shellsplit. :) – squiguy