2011-12-22 4 views
4

인터프리터로 작은 프로그램을 작성 중이며, 쉘에서 인식하지 못하는 명령을 bash로 파이프 처리하고 출력을 일반 터미널에서 작성한 것처럼 인쇄하고 싶습니다.파이프 입력 명령 행에서 배쉬 인터프리터

func RunExtern(c *shell.Cmd) (string, os.Error) { 
    cmd := exec.Command(c.Cmd(), c.Args()...) 
    out, err := cmd.Output() 

    return string(out), err 
} 

이 내가 지금까지 쓴 것입니다,하지만 그것은 단지의 인수와 함께 프로그램을 실행, 내가 이렇게하는 방법에 어떤 생각을 출력을 비난하고 얻을 수있는 전체 라인을 보내시겠습니까?

답변

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 만 실행하려고했는데, 유인해야했습니다. 감사합니다. :) –