Rust跨平台执行Shell命令的简洁初始化替代方案问询
Rust跨平台执行Shell命令的简洁初始化替代方案问询
我最近写Rust代码时碰到个跨平台执行Shell命令的小需求:同样的命令参数,Windows上得用cmd.exe /C启动执行,Linux上则是sh -c。目前我查了Command的相关用法,知道可以用条件编译的方式实现,大概代码是这样的:
use std::process::Command; use std::io; fn main() -> io::Result<()> { let target_cmd = ["这里是实际要执行的命令参数"]; let output = if cfg!(target_os = "windows") { Command::new("cmd.exe") .args(["/C"]).args(&target_cmd) .output() } else { Command::new("sh") .args(["-c"]).args(&target_cmd) .output() }?; // 后续处理命令输出的逻辑 Ok(()) }
但这段代码里,除了启动的程序和第一个控制参数不一样,后面的参数传递、执行调用逻辑完全重复,总感觉有点啰嗦冗余。想问问有没有更简洁的初始化方式,能把重复的部分抽出来,让代码看起来更干净清爽?
内容来源于stack exchange
相关产品推荐
相关产品推荐

