跳转至

002 exec

exec 库

golang 中用 exec 封装了执行命令的功能,就用法上来看可以分成如下几个场景。


简单执行

就是说只要执行一下命令,并不关注结果

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("dbm-agent", "stop")
    if err := cmd.Run(); err != nil {
        fmt.Println(err.Error())
    }
}


简单的获取结果

之所以说是简单,是因为这个不区分 stderr 和 stdout ,反正都给它拿到

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("date", "-I")
    stderr_and_stdin, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Println(err.Error())
    } else {
        fmt.Println(string(stderr_and_stdin))
    }
}


执行 shell 脚本

执行简单的 shell 脚本并获取输出

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("bash", "/tmp/a.sh")
    stderr_and_stdin, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Println(err.Error())
    } else {
        fmt.Println(string(stderr_and_stdin))
    }
}