我正在用一个解释器编写一个小程序,我想将我的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并获取输出,任何想法如何做?
答案 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)
}