我正在使用 clap 并且在尝试解析参数时出现意外行为。
我的命令行工具应该像这样工作
foo -u <user> <command>
例如:
foo -u jack echo s
foo -u paul ls -al
我需要获得诸如用户之类的选项,但就其<command>
本身而言,我需要成为其余的参数。
下面的代码会导致我无法获得值的行为,<command>
除非它被引用:
foo -u jack echo s
error: Found argument 's' which wasn't expected, or isn't valid in this context
虽然这很好用:
foo -u jack 'echo s'
有什么办法可以避免引号?
let matches = App::new("foo")
.version("0.1")
.arg(
Arg::with_name("user")
.short("u")
.long("user")
.required(true)
.takes_value(true),
)
.arg(
Arg::with_name("command")
.help("The command to run")
.required(true)
.takes_value(true),
)
.get_matches();
我还在clap 存储库上打开了一个问题。