[go] 명령 실행 입력 파이프

Go 프로그램에서 명령을 실행하고 입력을 파이프하는 방법에 대해 알아보겠습니다.

명령 실행

Go 언어에서 외부 명령을 실행하려면 os/exec 패키지를 사용합니다. 아래는 간단한 예시입니다.

package main

import (
	"fmt"
	"os/exec"
)

func main() {
	cmd := exec.Command("echo", "Hello, Go!")
	stdout, err := cmd.Output()
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	fmt.Println(string(stdout))
}

입력 파이프

외부 명령에 입력을 파이프하려면 os/exec를 사용하고 StdinPipe() 메서드를 호출합니다.

package main

import (
	"fmt"
	"io"
	"os/exec"
)

func main() {
	cmd := exec.Command("grep", "hello")
	stdin, _ := cmd.StdinPipe()
	defer stdin.Close()
	io.WriteString(stdin, "hello world\nfoo hello\nbar\n")
	output, _ := cmd.CombinedOutput()
	fmt.Printf("%s", output)
}

입력을 파이프하고 CombinedOutput() 메서드로 출력을 얻습니다.

이제 Go를 사용하여 명령 실행과 입력 파이프를 수행하는 방법을 알았습니다!

Go 공식 문서 - os/exec


이제 Go 프로그램에서 명령을 실행하고 입력을 파이프하는 방법에 대해 알게 되셨습니다.