gpt4 book ai didi

go - exec.Command 如何中断对 sed 的调用?

转载 作者:IT王子 更新时间:2023-10-29 01:52:07 26 4
gpt4 key购买 nike

我正在尝试从 go 运行以下命令。

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

从文件/tmp/result.json 中输出/home/output。

如果我从终端运行它,它会完美运行。但是,我不明白为什么它不喜欢从 go exec 运行。

这是我的代码。

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)
}
}

具体错误是:

sed: -e expression #1, char 1: unknown command: `''
2018/03/07 11:48:01 exit status 1

是什么导致了这种意外行为?

最佳答案

试试这个:

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

错误的引用问题。

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

关于go - exec.Command 如何中断对 sed 的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49141332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com