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
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?