完整系列教程详见:http://golang.iswbm.com
os/execCmd
- 只执行命令,不获取结果
- 执行命令,并获取结果(不区分 stdout 和 stderr)
- 执行命令,并获取结果(区分 stdout 和 stderr)
第一种:只执行命令,不获取结果
直接调用 Cmd 对象的 Run 函数,返回的只有成功和失败,获取不到任何输出的结果。
package main
import (
"log"
"os/exec"
)
func main() {
cmd := exec.Command("ls", "-l", "/var/log/")
err := cmd.Run()
if err != nil {
log.Fatalf("cmd.Run() failed with %sn", err)
}
}
第二种:执行命令,并获取结果
有时候我们执行一个命令就是想要获取输出结果,此时你可以调用 Cmd 的 CombinedOutput 函数。
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
cmd := exec.Command("ls", "-l", "/var/log/")
out, err := cmd.CombinedOutput()
if err != nil {
fmt.Printf("combined out:n%sn", string(out))
log.Fatalf("cmd.Run() failed with %sn", err)
}
fmt.Printf("combined out:n%sn", string(out))
}
CombinedOutput 函数,只返回 out,并不区分 stdout 和 stderr。如果你想区分他们,可以直接看第三种方法。