如何在Rust中将原始字符串传递给Command?

gxwragnw  于 2022-12-19  发布在  其他
关注(0)|答案(2)|浏览(96)

我有一个完整格式的字符串,该字符串是要使用https://doc.rust-lang.org/std/process/struct.Command.html运行的命令
例如"blah -a 'test arg'",我如何传入它而不需要自己解析它,这需要将引号组解析为一个arg?
我尝试在拆分后传递其余的参数。

63lcw9qa

63lcw9qa1#

我找到了shlex,它是一个shell单词的词法分析器。

s71maibg

s71maibg2#

你可以调用一个shell来运行这个命令,实际上你链接到的文档中有一个这样做的例子。

use std::process::Command;

let output = if cfg!(target_os = "windows") {
    Command::new("cmd")
            .args(["/C", "echo hello"])
            .output()
            .expect("failed to execute process")
} else {
    Command::new("sh")
            .arg("-c")
            .arg("echo hello")
            .output()
            .expect("failed to execute process")
};

let hello = output.stdout;

只需将"echo hello"的两个示例替换为要运行的命令即可。

相关问题