Rust - 无法运行复杂的终端命令



我正在尝试使用 rust 运行一个有点长的命令:

rsync -avL --progress -e 'ssh -i ~/path/to/mypem.pem' ../directory/src/file.js user@computer:~/data/school

我尝试这样做:

use std::process::Command;
let output = Command::new("rsync").args(&["-avL", "--progress", "-e", "'ssh", "-i", "~/path/to/mypem.pem'", "../directory/src/file.js", "user@computer:~/data/school"]).output().expect("BAD");
if !output.status.success() {
let s = String::from_utf8_lossy(&output.stderr);
print!("rustc failed and stderr was:n{}", s);
}
println!("{}", String::from_utf8_lossy(&output.stdout));

这似乎根本行不通。它给了我这个错误:

远程外壳命令中缺少尾随-"。

rsync 错误:语法或用法error_

我真的很感激任何关于我在这里做错的事情的帮助。我已经检查了命令的文档

从 rsync 命令的角度来看,这位:

ssh -i ~/path/to/mypem.pem

是一个参数,因此不应将其拆分为多个参数。

试试这个:

let output = Command::new("rsync").args(&["-avL", "--progress", "-e", "ssh -i ~/path/to/mypem.pem", "../directory/src/file.js", "user@computer:~/data/school"]).output().expect("BAD");

最新更新