英文:
Golang flags takes any arbitrary arguments
问题
我有一个包装另一个可执行文件的程序。我需要提供一些接口,以便当调用我的程序时,用户可以提供任意的参数,这些参数将传递给被包装的可执行文件。例如:
当用户调用
$ myprogram --call -additional -a -b -c 1 -d=true
我希望我的程序调用
wrapped_executable -a -b -c 1 -d=true
使用flags
包,实现这一目标的最佳方法是什么?
英文:
I have a program which wraps another executable. I need to provide some interface so that we my program is called, user can provide any arbitrary arguments which will be passed on to the executable that it wraps. For example:
When user calls
$ myprogram --call -additional -a -b -c 1 -d=true
I would like my program to call
wrapped_executable -a -b -c 1 -d=true
What is the best way to achieve this using flags package?
答案1
得分: 1
从flag文档中可以得知:
在第一个非标志参数之前(“-”是非标志参数)或者终止符“--”之后,标志解析会停止。
所以,在调用外部可执行文件时,将-additional
替换为--
:
$ myprogram --call -- -a -b -c 1 -d=true
然后,可以通过以下方式获取--
之后的参数:
flag.Parse()
args := flag.Args() // []string{"-a", "-b", "-c", "1", "-d=true"}
英文:
From the flag docs docs:
> Flag parsing stops just before the first non-flag argument ("-" is a
> non-flag argument) or after the terminator "--".
so when invoking your outer exe, replace -additional
with --
:
$ myprogram --call -- -a -b -c 1 -d=true
and then to get the arguments after the --
:
flag.Parse()
args := flag.Args() // []string{"-a", "-b", "-c", "1", "-d=true"}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论