golang封装一个执行命令行的函数(return stderr/stdout/exitcode)
在Go语言中,你可以使用os/exec
包来执行命令行指令,并获取标准输出、标准错误和退出状态码。以下是一个简单的函数,用于封装这一功能:
package main
import (
"bytes"
"fmt"
"os/exec"
)
// RunCommand 执行命令行指令并返回标准输出、标准错误和退出状态码
func RunCommand(name string, args ...string) (string, string, int) {
var stdout, stderr bytes.Buffer
cmd := exec.Command(name, args...)
cmd.Stdout = &stdout
cmd.Stderr = &stderr
err := cmd.Run()
exitCode := 0
if err != nil {
// 如果命令未正常执行,err 实际上是 ExitError 类型
if exitError, ok := err.(*exec.ExitError); ok {
exitCode = exitError.ExitCode()
}
}
return stdout.String(), stderr.String(), exitCode
}
func main() {
out, errOut, exitCode := RunCommand("echo", "Hello, World!")
fmt.Printf("Stdout: %s\n", out)
fmt.Printf("Stderr: %s\n", errOut)
fmt.Printf("Exit Code: %d\n", exitCode)
}
这个函数接受命令名和参数,创建一个exec.Cmd
对象,将标准输出和错误重定向到bytes.Buffer
对象,然后执行命令。如果命令执行出现错误,它会检查err
是否是exec.ExitError
类型,并获取退出状态码。最后,函数返回标准输出、标准错误和退出状态码。
评论已关闭