簡體   English   中英

如何將空間傳遞給 Cobra CLI 字符串切片標志?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM