1 回答

TA贡献1821条经验 获得超6个赞
您可以使用 io.Pipe() ,它基本上创建了一个同步的内存管道,它可用于将期望 io.Reader 的代码与期望 io.Writer 的代码连接起来。例如,如果您有这样的 json 内容:
{
"fruits": [
"apples",
"oranges",
"pears"
]
}
你可以尝试这样的事情:
package main
import (
"bytes"
"io"
"os"
"os/exec"
)
func main() {
c1 := exec.Command("cat", "/home/fruits.json")
c2 := exec.Command("jq", ".fruits[0:2]")
r, w := io.Pipe()
c1.Stdout = w
c2.Stdin = r
var b2 bytes.Buffer
c2.Stdout = &b2
c1.Start()
c2.Start()
c1.Wait()
w.Close()
c2.Wait()
io.Copy(os.Stdout, &b2)
}
它会给你这样的东西:
[
"apples",
"oranges"
]
即使您可以像这样通过管道传输多个命令,我还是强烈建议您使用标准库中的json包到 Marshal 和 Unmarshal JSON。
- 1 回答
- 0 关注
- 149 浏览
添加回答
举报