繁体   English   中英

如何运行一个可以接受数量不指定的env参数的命令?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM