golang - Goで外部コマンドをパイプして実行する - Qiita
もっとうまいやり方誰か教えてください( ꒪⌓꒪)
http://qiita.com/yuroyoro/items/9358cd25b5f7fe9dd37f
本当はプロセスの生死と共にパイプが閉じられないといけないので io.Pipe
ではなく Cmd.StdoutPipe
を使った方がよい。ただしコード量はもう少し多くなる。確かに毎回書くのはダルいのでパッケージを作った。
mattn/go-pipeline - GitHub
https://github.com/mattn/go-pipeline
これを使うと簡単にコマンドパイプラインが扱える。
package pipeline
import (
"fmt"
"log"
)
func ExampleCommandPipeLine() {
out, err := Output(
[]string{"git", "log", "--oneline"},
[]string{"grep", "first import"},
[]string{"wc", "-l"},
)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(out))
// Output:
// 1
}
よろしければどうぞお使い下さい。