完整系列教程详见:http://golang.iswbm.com


os/execCmd
  1. 只执行命令,不获取结果
  2. 执行命令,并获取结果(不区分 stdout 和 stderr)
  3. 执行命令,并获取结果(区分 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。如果你想区分他们,可以直接看第三种方法。