package web import ( "io" "os/exec" "strings" ) func Shlex(cmd string) (argv []string, err error) { xargs := exec.Command("xargs", "-n1") stdin, err := xargs.StdinPipe() if err != nil { return } _, err = io.WriteString(stdin, cmd) if err != nil { return } err = stdin.Close() if err != nil { return } output, err := xargs.Output() if err != nil { return } argv = strings.Split(string(output), "\n") if argv[len(argv)-1] == "" { argv = argv[:len(argv)-1] } return } func Quote(argv []string) (cmd string, err error) { argv = append([]string{"%q "}, argv...) printf := exec.Command("printf", argv...) output, err := printf.Output() if err != nil { return } cmd = string(output) cmd = cmd[:len(cmd)-1] // strip off the last space from '%q ' return }