😽

Goで外部cliの標準出力、標準エラー出力

2021/11/13に公開

業務でcliライブラリを実行する機会があったのですが、Goで外部ライブラリ(go言語ではないcli)を実行する方法がわからなかったのでまとめます。

CLIの実行

GoでCLI形式のライブラリを実行する際にはos/execコマンドを使用します。
引数にCommand関数の引数に実行したいCLIのコマンドを記載します。

package main
import "os/exec"
// ex: git config -l
func main() {
  cmd := exec.Command("git", "config", "-l")
}

標準出力

標準出力をするとなると上記のプログラムに下記のコマンドを追加して出力をします。

stdout, err := cmd.Output()
if err != nil {
  panic(err)
}
fmt.Println(string(stdout))

標準エラー出力

エラー出力を行うとなると上記の標準出力ではエラーが表示されない。。
なので、下記のコマンドを使用してエラー出力を行います。

stderr, err := cmd.CombinedOutput()
if err != nil {
  fmt.Println(string(stderr))
}

業務でOutput()を使ってもエラーが表示されなかったので、ここに記録を残しておきます。

Discussion