Golang os/exec 使用方法(筆記)
加入額外的環境參數再執行指令
cmd := exec.Command("programToExecute")
additionalEnv := "FOO=bar"
newEnv := append(os.Environ(), additionalEnv)
cmd.Env = newEnv
out, err := cmd.CombinedOutput()
if err != nil {
log.Fatalf("cmd.Run() failed with %s\n", err)
}
fmt.Printf("%s", out)
在 Linux 下使用 os/exec + Pipe 或 Bash 運算式
rcmd := `iw dev | awk '$1=="Interface"{print $2}'`
cmd := exec.Command("bash", "-c", rcmd)
out, err := cmd.CombinedOutput()
if err != nil {
log.Println(err.Error())
}
log.Println(string(out))
在 Windows 下使用 os/exec + Batch 運算式
cmd := exec.Command("cmd", "/c", "ffmpeg -i myfile.mp4 myfile.mp3 && del myfile.mp4")
out, err := cmd.CombinedOutput()
if err != nil {
log.Println(err.Error())
}
log.Println(string(out))
解決 Windows CMD 在 os/exec 時會出現本地語言的問題
cmd := exec.Command("cmd", "/c", "chcp 65001 && netsh WLAN show drivers")
out, err := cmd.CombinedOutput()
if err != nil {
log.Println(err.Error())
}
log.Println(string(out))
使用此方法得出的 output string 請記得把回傳的首行(chcp 的回傳結果)刪除掉再進行其他處理和讀取。
