Я ищу пакет, который будет принимать строку, такую как -v --format "some example" -i test
и разобрать его в срезе строк, обработки кавычки, пробелы и т.д. правильно:Разбор строки в командную строку флаги и аргументы в Golang
-v
--format
some example
-i
test
Я проверил встроенный пакет flag
, а также другие пакеты обработки флагов в Github, но ни один из них, похоже, не справляется с этим конкретным случаем анализа синтаксической строки в токенах. Прежде чем пытаться это сделать, я предпочел бы найти пакет, так как я уверен, что есть много особых случаев для обработки.
Любое предложение?
Это смесь того, что делает оболочки (в кавычках строки группировка) и конкретное поведение гну инструментов вариант синтаксического анализа (Вкрапленная арг и флаги, и разные длинные/короткий формат флага). Я не знаю, кто их объединяет в пакет. – JimB
Быстрый хак (если вы гибки, чтобы изменить способ обеспечить ввод) будет (см 'документации flag' пакета): \t \t множества: = & flag.FlagSet {} \t \t v: = множество .Bool ("v", false, "") \t Формат: = set.String ("format", "", "") \t i: = set.String ("i", "", "") \t \t set.Parse ([] строка { '-V',' --format = "некоторые примеры", '-i = test'}) \t для K, V: = диапазон set.Args() { \t \t log.Println (к, v) \t} \t \t log.Printf ("v =% v = формат% Vi =% v", * v * формат, * я) –
Я не уверен, если Я понимаю. Вы планируете сделать что-то вроде: 'cmd -v --format 'в качестве примера« -i test »? Если это так, вы можете просто взять все аргументы из 'os.Args'. – 425nesp