Передача командной строки в интерпретатор bash - PullRequest
4 голосов
/ 22 декабря 2011

Я пишу небольшую программу с интерпретатором, я хотел бы передать любую команду, которая не распознается моей оболочкой, в 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 голосов
/ 22 декабря 2011

Например, для отображения записей каталога в столбцах,

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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...