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 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题