dtpd58676 2017-12-06 05:35
浏览 484
已采纳

在Go中调用exec.Cmd()后修改参数

I am trying to run command with exec.Cmd(command, flags...) and want to have the flexibility to modify the arguments before calling the cmd.Run() function.

for example:

cmd := exec.Command("echo", "hello world")
cmd.Env = []string{"env1=1"}
cmd.Args = []string{"echo2", "oh wait I changed my mind"}
cmd.Run()

The above code seems to be always running echo hello world but not echo2 oh wait I changed my mind

Am I correct to expect echo2 to be run instead of echo?

  • 写回答

1条回答 默认 最新

  • duanke1984 2017-12-06 06:43
    关注

    When changing the command to execute, you must also set cmd.Path as in exec.Command.

    cmd := exec.Command("echo", "hello world")
    cmd.Env = []string{"env1=1"}
    cmd.Args = []string{"echo2", "oh wait I changed my mind"}
    
    lp, err := exec.LookPath("echo2")
    if err != nil {
        // handle error
    }
    
    cmd.Path = lp
    if err := cmd.Run(); err != nil {
        // handle error
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应