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

时间:2011-12-22 02:47:38

标签: 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
}

这是我到目前为止所写的内容,但它只执行带有args的程序,我想将整行发送到bash并获取输出,任何想法如何做?

1 个答案:

答案 0 :(得分: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)
}