You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
739 B

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
}