什么是有效字符以及如何在 clap.rs 参数中转义?
What are valid characters and how to escape in clap.rs arguments?
我想将某种形状或形式 dictionary/map/object 传递到我的拍手应用程序中。我可以预处理 dict 以将其转换为一些 csv 或其他内容。我的问题是我无法在 clap 文档中找到哪些字符对参数值有效以及如何转义它们。这与拍手无关,而是 shell 具体吗?
我可以传递类似
的东西吗
myApp --dicty="a=1,b=3,qwe=yxc"
?
Is this unrelated to clap and instead shell specific?
大多数情况下,是的。 clap
将获取 shell 确定的任何参数并将对其进行解析。
但是 clap 内置了对值集的支持,来自自述文件:
- Supports multiple values (i.e.
-o <val1> -o <val2>
or -o <val1> <val2>
)
- Supports delimited values (i.e.
-o=val1,val2,val3
, can also change the delimiter)
如果这还不够,那么您必须将 dicty
定义为 String
,您将收到字符串 a=1,b=3,qwe=yxc
(我认为您不会收到引号)然后你必须自己解析它,要么手动(regex/split/...),要么用更高级的东西(例如 csv 箱子,尽管这可能有点过头了)。
虽然这看起来有点奇怪。
FWIW structopt(它建立在 clap 的基础上以提供更具声明性的 UI,并且应该是 Clap 3 的一部分)并不完全支持这类事情,但可以相对容易地强制使用它: https://github.com/TeXitoi/structopt/blob/master/examples/keyvalue.rs
经过一些修改将允许类似
myApp -D a=1 -D b=3 -D que=yxc
或(尽管请参阅链接片段中的评论以了解限制)
myApp -D a=1 b=3 que=yxc
作为 vec![("a", "1"), ("b", "3"), ("que", "yxc")]
收集,从中创建散列图很简单。
我想将某种形状或形式 dictionary/map/object 传递到我的拍手应用程序中。我可以预处理 dict 以将其转换为一些 csv 或其他内容。我的问题是我无法在 clap 文档中找到哪些字符对参数值有效以及如何转义它们。这与拍手无关,而是 shell 具体吗?
我可以传递类似
的东西吗myApp --dicty="a=1,b=3,qwe=yxc"
?
Is this unrelated to clap and instead shell specific?
大多数情况下,是的。 clap
将获取 shell 确定的任何参数并将对其进行解析。
但是 clap 内置了对值集的支持,来自自述文件:
- Supports multiple values (i.e.
-o <val1> -o <val2>
or-o <val1> <val2>
)- Supports delimited values (i.e.
-o=val1,val2,val3
, can also change the delimiter)
如果这还不够,那么您必须将 dicty
定义为 String
,您将收到字符串 a=1,b=3,qwe=yxc
(我认为您不会收到引号)然后你必须自己解析它,要么手动(regex/split/...),要么用更高级的东西(例如 csv 箱子,尽管这可能有点过头了)。
虽然这看起来有点奇怪。
FWIW structopt(它建立在 clap 的基础上以提供更具声明性的 UI,并且应该是 Clap 3 的一部分)并不完全支持这类事情,但可以相对容易地强制使用它: https://github.com/TeXitoi/structopt/blob/master/examples/keyvalue.rs
经过一些修改将允许类似
myApp -D a=1 -D b=3 -D que=yxc
或(尽管请参阅链接片段中的评论以了解限制)
myApp -D a=1 b=3 que=yxc
作为 vec![("a", "1"), ("b", "3"), ("que", "yxc")]
收集,从中创建散列图很简单。