我尝试在Rust上使用std::process::Command
插入多个命令,而不是运行bash脚本。我已经阅读了使用这里引用的示例运行多个命令的概念,来自execute
机箱:
https://docs.rs/execute/latest/execute/#execute-multiple-commands-and-pipe-them-together.
use std::process::{Command, Stdio};
use execute::Execute;
let mut command1 = Command::new("echo");
command1.arg("HELLO WORLD");
let mut command2 = Command::new("cut");
command2.arg("-d").arg(" ").arg("-f").arg("1");
let mut command3 = Command::new("tr");
command3.arg("A-Z").arg("a-z");
command3.stdout(Stdio::piped());
let output = command1.execute_multiple_output(&mut [&mut command2, &mut command3]).unwrap();
assert_eq!(b"hello\n", output.stdout.as_slice());
问题是这些命令是以分散的格式编写的。我想知道是否有更好的方法可以直接将子命令作为参数添加到Command::new()
下,而不必将它们分隔为command1
、command2
等。
1条答案
按热度按时间kwvwclae1#
shutil机箱简化了多个命令的运行。
然后,您可以运行示例管道,如下所示: