Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

GO言語でシェルコマンドを実行する

GO言語でシェルコマンドを実行する方法です。

実際のところ

この例ではコマンドを実行し結果を得ています。
結果は"[]byte"型で返ってくるため、必要おうじてstring型にキャストしてやる必要があります。

package main

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

func main() {
	var out []byte
	out, err := exec.Command("ls","-la").Output()
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("Result:%s\n", string(out))
}


実行すると、こんな感じ。

$ go run curlexe.go | head -n 5
Result:total 8744
drwxr-xr-x   45 shuzo_kino  staff     1530  4 10 23:44 .
drwxr-xr-x+ 153 shuzo_kino  staff     5202  4  4 13:02 ..
-rw-r--r--@   1 shuzo_kino  staff     6148 10  7  2016 .DS_Store
-rw-r--r--    1 shuzo_kino  staff      485  4  1  2015 1.txt

単に実行したいだけの場合、Run()をやってやるだけで良いです。
内部的にはStartとWaitを読み出してるだけのようです