読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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を読み出してるだけのようです