Ответ Тома Лорда намного лучше, чем этот.
Вы, вероятно, захотите посмотреть OptionParser или GetOptLong , есливам нужен синтаксический анализ аргументов командной строки, предоставляемых программе ruby.
Если вы заинтересованы в разборе некоторых строк, которые могут быть или не быть командами с аргументами, вот краткий пример:
Я бы использовал scan
вместо split
со следующим регулярным выражением: /(".*"|[\w\:\:\.\-\\]+)/
.
Лучшие результаты получены от: 'some string'.scan(/(".*"|[\w\:\:\.\-\\]+)/).flatten
:
["ping", "http:\\www.google.com"]
["abc-abc", "-V"]
["abc-abc", "-L", "c:\\folder\\", "name\\test.log"]
# Technically, this is wrong, but so is the non-escaped whitespace.
["\"C:\\Program Files\\example\\program.exe\"", "-arg1", "-arg2"]
["\"C:\\Program Files\\example\\program.exe\""]