如何将空间传递给Cobra CLI字符串切片标志



我正在使用Pflag库中的StringSliceP接受字符串列表作为CLI参数。

我从Windows命令提示符调用Go应用程序。

我希望列表中的一些字符串包含一个("(双引号字符,但我无法做到这一点。

逃避报价不起作用:

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 d e]

goapp.exe --string-slice-list "a\""b",c,d,e

[a"b c d e](我不确定你到底想要哪一个(。

正如已经指出的,这是因为Pflag库使用了Go标准库编码.csv,支持RFC 4180中描述的格式。如果我们参考第5、6和7段中的第2节:

如果字段没有用双引号括起来,则字段中不能出现双引号。

包含换行符(CRLF(、双引号和逗号的字段应该用双引号括起来。

如果使用双引号将字段括起来,则使用双引号必须通过在字段前面加另一个双引号。

相关内容

  • 没有找到相关文章

最新更新