You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 13:48:14