exec.Command如何打破这个调用sed?

时间:2018-03-06 22:48:50

标签: go sed

我试图从go运行以下命令。

sed -i' s | / home / output || g' /tmp/results.json

从文件/tmp/result.json中删除/ home / output。

如果我从终端运行它,它可以很好地工作。但是,我无法弄清楚为什么它不喜欢从执行官那里跑出来。

这是我的代码。

npm info eslint-config-airbnb peerDependencies

具体错误是:

package main

import (
        "fmt"
        "log"
        "os"
        "os/exec"
)

func main() {
        cmd := exec.Command("sed", "-i", "'s|/octane/data||g'", "./results.json")
        cmd.Stdout = os.Stdout
        cmd.Stderr = os.Stderr

        if err := cmd.Start(); err != nil {
                log.Fatal(err)
        }

        if err := cmd.Wait(); err != nil {
                log.Fatal(err)
        }
}

造成这种意外行为的原因是什么?

1 个答案:

答案 0 :(得分:5)

试试这个:

cmd := exec.Command("sed", "-i", "s|/octane/data||g", "./results.json")

错误引用问题。

单引号对于shell是必需的,但对于exec.Command调用则不是。