[英]How do I run a command that can take an unspecified number of env arguments?
fn main() {
let args: Vec<String> = env::args().collect();
Command::new("sudo")
.arg("apt")
.arg(&args[0].to_lowercase())
.arg(&args[EVERY OTHER ARGUMENT THE USER INPUTTED]);
}
正如您在代码中看到的那样,我希望让用户输入的每个参数(在第一个参数之后)都可以运行,但是我不知道如何实现它。
您可以直接使用原始的迭代器,而不是将env::args()
迭代器收集到一个向量中,然后修改该向量:
let mut args = env::args();
if let Some(first_arg) = args.next() {
Command::new("sudo")
.arg("apt")
.arg(first_arg.to_lowercase())
.args(args);
}
您可以从参数列表中删除第一个元素,然后将其作为完整的矢量引用提供给args,如下所示:
let mut args: Vec<String> = env::args().collect();
if !args.is_empty() {
let first_arg = args.remove(0);
Command::new("sudo")
.arg("apt")
.arg(&first_arg.to_lowercase())
.args(&args);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.