猿问

使用 Golang 运行 Grep 命令时退出状态 2

我使用 Golang 编写了简单的脚本来 grep 带有一些参数的日志文件。这是我的 shell 命令


grep CRON var/log/sys | tail -5 | grep "cd /home/raka/repo && git status"


我想使用os/exec包在 Golang 中运行上面的命令。这是我的代码狙击。


var (

  reader io.Reader

  out    []byte

  err    error

  commandName string = "grep"

)


args := []string{"CRON", "/var/log/syslog", "| tail -6", "| grep \"git status\""}


cmd := exec.Command(commandName, args...)

r, err = cmd.StdoutPipe()

err = cmd.Start()

out, err = ioutil.ReadAll(r)

err = cmd.Wait()


return strings.Split(string(out), "\n")```

目前,上面的 sniped 不起作用,因为exit status 2. 你们中的任何人/女士有解决这个问题的方法吗?太感谢了。


慕慕森
浏览 370回答 1
1回答

翻过高山走不出你

管道 ( |) 由 shell 程序(如 bash)实现。如果你想使用它们,你应该执行 shell 并传递一个包含管道程序调用的命令:exec.Command("/bin/sh", "-c",     "grep CRON var/log/sys | tail -5 | grep \"cd /home/raka/repo && git status\"")
随时随地看视频慕课网APP

相关分类

Go
我要回答