package utils import ( "bytes" "errors" "io" "os/exec" "strings" ) func RunCommand(cmdString string, reader io.Reader, ifout bool) ([]byte, error) { // fmt.Println(cmdString) cmds := strings.Split(cmdString, " ") cmd2 := exec.Command(cmds[0], cmds[1:]...) if reader != nil { cmd2.Stdin = reader //bytes.NewReader(*stdin) } var stderr bytes.Buffer cmd2.Stderr = &stderr //命令输出的错误1. var stdout bytes.Buffer if ifout { cmd2.Stdout = &stdout //命令的输出 1. } err := cmd2.Run() s := stderr.String() //得到命令输出的错误2. if ifout { sout := stdout.Bytes() //得到命令的输出 2. if len(sout) > 0 { return sout, err } } if s != "" { err = errors.New(s) } return nil, err }