我正在尝试构建一个 linux 实用程序,我想解析以下命令。
go-find / -name "filename"
上面应该在给定路径(/)中搜索给定的“文件名”。
但是代码无法解析标志,因为它在要解析的任何标志值之前遇到非标志参数。帮助理解它。这是写的标志包文档。
“标志解析在第一个非标志参数(“-”是非标志参数)之前或终止符“--”之后停止。”
我在想还有其他解决方法吗?
使用 flag.FlagSet 解析没有“路径”变量的标志,使用 os.Args 手动解析“路径”变量:
type Flags struct {
Path string
Name string
}
func main() {
args := os.Args
if len(args) < 4 { // the program name is the first argument
log.Fatal("not enough arguments")
}
var (
fs = flag.NewFlagSet(args[0], flag.ExitOnError)
f Flags
)
fs.StringVar(&f.Name, "name", "", "file name")
err := fs.Parse(args[2:]) // parse flags without the program name and the 'path' argument
if err != nil {
log.Fatal(err)
}
f.Path = args[1] // get 'path' argument
fmt.Println(f)
// search algorithm ...
}
{/ filename}