将输入管道命令行传递给Bash解释器

4
我正在使用一个解释器编写一个小程序,我希望将任何未被我的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
}

目前我已经写了这些内容,但它只能执行带参数的程序,我想将整行发送到bash并获取输出,您有什么办法吗?

1个回答

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)
}

我尝试仅运行bash,应该使用手册。 非常感谢 :) - r---------k

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接