管道输入命令行到bash解释器

r--*_*--k 4 bash go

我正在用一个解释器编写一个小程序,我想将我的shell无法识别的任何命令用于bash,并打印输出,就好像写在普通终端中一样.

func RunExtern(c *shell.Cmd) (string, os.Error) {   
    cmd := exec.Command(c.Cmd(), c.Args()...)
    out, err := cmd.Output()

    return string(out), err
}
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所写的内容,但它只用它的args执行一个程序,我想将整行发送到bash并得到输出,任何想法怎么做?

pet*_*rSO 5

例如,要列出列中的目录条目,

package main

import (
    "exec"
    "fmt"
    "os"
)

func BashExec(argv []string) (string, os.Error) {
    cmdarg := ""
    for _, arg := range argv {
        cmdarg += `"` + arg + `" `
    }
    cmd := exec.Command("bash", "-c", cmdarg)
    out, err := cmd.Output()
    return string(out), err
}

func main() {
    out, err := BashExec([]string{`ls`, `-C`})
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(out)
}
Run Code Online (Sandbox Code Playgroud)