Передача команды в другую команду, что я здесь делаю неправильно?
Я следил за этим вопросом , как сделать сэндвич-трубу в ржавчине?
это команда, которую я в конечном итоге хочу запустить (linux/bash) из ржавчины, отлично работает, написанная в оболочке, например:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
это код, который у меня есть, представляющий то, что я пытался..
fn add_docker_gpg_key() {
let mut curl = Command::new("curl")
.arg("-fsSL")
.arg("https://download.docker.com/linux/ubuntu/gpg")
.stdout(Stdio::piped())
.spawn()
.expect("curl fail");
let mut apt_key = Command::new("apt-key")
.arg("add")
.arg("-")
.stdin(Stdio::piped())
.spawn()
.expect("api=key fail");
{
let l_in = BufReader::new(curl.stdout.take().unwrap());
let mut r_out = apt_key.stdin.take().unwrap();
for line in l_in.lines() {
println!("{:?}", line);
write!(&mut r_out, "{}", line.unwrap()).unwrap();
}
}
let left_ecode = curl.wait().expect("failed to wait on child");
let right_ecode = apt_key.wait().expect("failed to wait on child");
assert!(left_ecode.success());
assert!(right_ecode.success());
}
конец скрипта image Я получаю это, когда запускаю его
что лучше всего сделать для этого?