[英]How to pass space to Cobra CLI string slice flag?
我正在使用 Pflag 庫中的StringSliceP接受字符串列表作為 CLI arguments。
我正在從 Windows 命令提示符調用 Go 應用程序。
我希望列表的某些字符串包含 ( "
) 雙引號字符,但我無法做到這一點。
Escaping 引號不起作用:
goapp.exe --string-slice-list "a\"b",c,d,e
預期結果: []string{"a\"b", "c", "d", "e"}
實際結果: Error: invalid argument "a\"\\b,c,d,e" for "--string-slice-list" flag: parse error on line 1, column 1: bare " in non-quoted-field
加倍引號不起作用:
goapp.exe --string-slice-list "a""b",c,d,e
預期結果: []string{"a\"b", "c", "d", "e"}
實際結果: Error: invalid argument "a\"b,c,d,e" for "--string-slice-list" flag: parse error on line 1, column 1: bare " in non-quoted-field
以下是如何從 Windows 命令提示符執行此操作:
goapp.exe --string-slice-list \"a\"\"b\",c,d,e
產生[a"b c de]
和
goapp.exe --string-slice-list \"a\\\"\"b\",c,d,e
[a\"b c de]
(我不確定你真正想要哪一個)。
原因是,正如已經指出的那樣, Pflag 庫使用了 Go 標准庫編碼/csv ,支持RFC 4180中描述的格式。 如果我們參考第 5、6 和 7 段中的第 2 節:
如果字段沒有用雙引號括起來,則雙引號可能不會出現在字段內。
包含換行符 (CRLF)、雙引號和逗號的字段應該用雙引號括起來。
如果使用雙引號將字段括起來,則出現在字段內的雙引號必須通過在其前面加上另一個雙引號來進行轉義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.