- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
问题:
当双破折号后有命令时,应用程序应如何解析命令行?(不重复 this 和 this )
我知道双破折号通常会做什么:
A -- signals the end of options and disables further option processing. Any arguments after the -- are treated as file‐ names and arguments. An argument of - is equivalent to --
因此它将以下内容设置为参数,例如: myapp -f <args> ...
那么$ myapp -f -- -a -b
会治疗-a
和 -b
作为 -f
的参数, 而不是标志
但是当应用需要时会发生什么:
myapp cmd <arg> -f <args>...
命令行是$ myapp -f -- test cmd sth
, 是否应该解析为:
myapp
收到一个-f
带有参数的标志 test
, cmd
和 sth
myapp
收到一个cmd
命令后跟 sth
, 一个 -f
带参数 test
我正在为 python 编写一个命令行解析器,所以我需要知道它应该如何运行。
非常感谢:)
最佳答案
你写的
$ myapp -f -- -a -b
will treat -a and -b as arguments of -f, instead of Flags
不完全是。双破折号使 -a
和 -b
成为 myapp
的参数。如果 -f
需要一个参数,使用双破折号会引发错误,因为没有给出这样的参数。
如果你的解析器定义了一个子解析器,它之前的任何选项都被假定为由主解析器定义的选项,并且子命令后面的任何选项都是子解析器的一部分。例如,用
p = ArgumentParser()
p.add_argument("-v", action='store_true')
sp = p.add_subparsers()
p1 = sp.add_parser('cmd')
p1.add_argument('-v')
命令行 myapp -v cmd -v test
会区别对待两个 -v
;第一个是在 p
上定义的 store_true
选项,第二个是在 p1
上定义的选项。你的命令行
myapp -f -- test cmd sth
如果 -f
需要参数则产生错误。如果 -f
没有,那么 myapp
只是一个选项 -f
和 3 个位置参数 test
, cmd
和 sth
。
关于linux - 执行命令时双破折号有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26282344/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!