123456789101112131415161718192021222324252627282930313233343536 |
- package cmd
- import (
- "fmt"
- "os/exec"
- "strings"
- )
- func ExecCmd(cmdStr string) (string, error) {
- args := splitArgs(cmdStr)
- var cmd *exec.Cmd
- if len(args) == 1 {
- cmd = exec.Command(args[0])
- } else {
- cmd = exec.Command(args[0], args[1:]...)
- }
- prepareBackgroundCommand(cmd)
- out, err := cmd.CombinedOutput()
- if err != nil {
- return "", fmt.Errorf("%v, %s", err, string(out))
- }
- return string(out), nil
- }
- func splitArgs(cmd string) []string {
- args := strings.Split(cmd, " ")
- // use in pipeline
- if len(args) > 2 && strings.ContainsAny(cmd, "|") {
- suffix := strings.Join(args[2:], " ")
- args = append(args[:2], suffix)
- }
- return args
- }
|