2011-12-22 18 views
4

私はインタプリタ付きの小さなプログラムを書いています。シェルから認識されなかったコマンドをbashにパイプし、通常のターミナルで書かれたように出力します。パイプ入力コマンドラインから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のと取得する行全体を送りたいですか?列のディレクトリエントリをリストする例えば

答えて

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

-c !! 私はbashだけを実行しようとしました。 ありがとうございます:) –

関連する問題