GO에서 exec.Command
를 사용할 경우 대부분 output을 정상적으로 받을 수 있다. 하지만, 일부 솔루션 docker exec
의 경우는 결과가 잘 받아지지 않는다. 이럴때 아래 처럼 처리해 줄 경우 결과를 끝까지 받아 준다.
func runCommand(name string, arg ...string) string {
cmd := exec.Command(name, arg...)
stdin, err := cmd.StdinPipe()
if err != nil {
log.Panic(err)
}
go func() {
defer stdin.Close()
_, _ = io.WriteString(stdin, "values written to stdin are passed to cmd's standard input")
}()
out, err := cmd.CombinedOutput()
if err != nil {
fmt.Println("error", err)
}
fmt.Println(string(out))
return string(out)
}