我正在尝试使用 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");