我有一个名为test的golang二进制文件。我有两个使用golang argparse库的标志-p和-s。我希望用户像下面的场景一样通过它们:
./test -p
./test -s serviceName
./test -p -s serviceName
意味着传递-p时应使用空值,传递-s时应使用任何服务名称。1和2工作良好,但在第三个-p标志取值"0"-s";。我想从第三条得到的是-p应该是空值("(,-s应该是";serviceName";。代码:
parser := argparse.NewParser("./test", "Check status/version of test")
parser.DisableHelp()
platformFormatVal := parser.String("p", "platform", &argparse.Options{Required: false, Help: "Print status of platform", Default: "Inplatform"})
serviceFormatVal := parser.String("s", "service", &argparse.Options{Required: false, Help: "Print status of service", Default: "Inservice"})
err := parser.Parse(os.Args)
if err != nil {
//generic error
}
platformFormat = *platformFormatVal
serviceFormat = *serviceFormatVal
没有使用argparse
lib,只有标准的flag
,但根据文档,您将p
配置为字符串参数,而它实际上是一个布尔标志。
您应该配置类似的参数:
sArg := parser.String("s", ...)
pArg := parser.Flag("p", ...)
然后你可以这样使用它:
if *pArg {
...
}