如何在Go中独立运行多个shell命令

时间:2017-05-02 12:33:14

标签: shell go cmd operating-system exec

我试图找到一种方法来根据同一会话中上一个命令的输出运行一些命令。

例如:

  • cmd_onecmd_twocmd_three
  • 先运行cmd_one
  • 如果cmd_one返回非零退出状态,则运行cmd_two
  • 否则运行cmd_three

这样的事情:

package main

import (
    "fmt"
    "os/exec"
)

func main() {

    cmd := exec.Command("/bin/sh")

    pw, _ := cmd.StdinPipe()
    pr, _ := cmd.StdoutPipe()
    pe, _ := cmd.StderrPipe()

    cmd.Start()

    // run "cmd_one"
    pw.Write([]byte("cmd_one\n"))

    /*
       Some way to get the output of "cmd_one" <- Tricky one

       if "cmd_one" exits with non-zero exit status, run "cmd_two"

       else run "cmd_three"
    */

    pw.Close()

    cmd.Wait()
}

0 个答案:

没有答案