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

时间:2016-01-08 04:34:10

标签: bash shell go

我使用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")```

目前,由于exit status 2,上述狙击不起作用。 你们这些人/女士们有解决这个问题的方法吗?非常感谢你。

1 个答案:

答案 0 :(得分:6)

管道(|)由shell程序(如bash)实现。如果要使用它们,则应执行shell传递包含管道程序调用的命令:

exec.Command("/bin/sh", "-c",
    "grep CRON var/log/sys | tail -5 | grep \"cd /home/raka/repo && git status\"")